sorl 6.5.1的solrj的常规使用
来源:互联网 发布:c#windows窗体程序设计 编辑:程序博客网 时间:2024/06/06 02:58
sorl 6.5.1的solrj的常规使用
前言
- 使用java代码和solr做交互处理,就需要solrj的使用了。最近工作偏忙,有时间做出了基础版的solrj的使用。供大家参考。
- 大部分solrj的网络文章包括solr的wiki,都讲对象指向了HttpSolrServer,但solr的6.5.x的版本却怎么也找不到这个方法,使用的是HttpSolrClient,功能体验差不多。
- 下面贴出代码,基础应用应该是没问题。
package cn.rusth.solr.FirstExample;import cn.rusth.properties.PropertiesReader;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.impl.HttpSolrClient;import org.apache.solr.client.solrj.response.QueryResponse;import org.apache.solr.client.solrj.response.UpdateResponse;import org.apache.solr.common.SolrDocument;import org.apache.solr.common.SolrDocumentList;import org.apache.solr.common.SolrInputDocument;import org.apache.solr.common.params.ModifiableSolrParams;import org.apache.solr.common.params.SolrParams;import org.apache.solr.servlet.SolrRequestParsers;import java.util.*;/** * solrclient测试类 * <br>基础功能测试 * Created by rusth on 2017/5/9. */public class HttpSolrClientTest { private HttpSolrClient client; public HttpSolrClientTest() { String url = PropertiesReader.read("/config/config.properties", "solr_url"); System.out.println("url=" + url); client = new HttpSolrClient(url); } /** * 增加和更新索引 * @throws Exception */ public void insertDataToSolr() throws Exception { SolrInputDocument input = new SolrInputDocument(); input.addField("id", "1761",1.0f); input.addField("goods_id", "7510");//不用_s的方式,配置文件已经进行了配置,无需此操作 input.addField("name", "爱韩寒"); client.add(input);//如果不存在就新增,存在就更新 //不能忘记提交 client.commit(); } /** * 删除索引 * @throws Exception */ public void deleteSolrIndex()throws Exception{ UpdateResponse result= client.deleteById("1755"); System.out.println(result.getStatus()); System.out.println(result.toString()); client.commit(); } /** * 借助SolrRequestParsers解析“检索字符串”进行检索 * @param queryString * @return * @throws Exception */ public String querySolr01(String queryString) throws Exception { SolrParams solrParams = SolrRequestParsers .parseQueryString(queryString);//直接使用有bug try { QueryResponse queryResponse = client.query(solrParams); List<Goods> results = queryResponse.getBeans(Goods.class); System.out.println(results.toString()); } catch (SolrServerException e) { e.printStackTrace(); } return null; } /** * 查询 *借助ModifiableSolrParams对象接收查询条件进行检索 * @param queryString * @return * @throws Exception */ public List querySolr02(String queryString) throws Exception { List<Goods> list=new ArrayList<Goods>(); ModifiableSolrParams solrParams = new ModifiableSolrParams(); solrParams.add("q", queryString); solrParams.add("start", "0"); solrParams.add("rows", "10"); QueryResponse queryResponse = client.query(solrParams); /** * 返回值数据 * {responseHeader={status=0,QTime=0,params={q=name:"韩",start=0,rows=10,wt=javabin,version=2}}, * response={numFound=4,start=0,docs=[SolrDocument{id=1734, name=韩寒, _version_=1566910655055790080}, * SolrDocument{id=1741, name=韩韩, _version_=1566911251160760320}, * SolrDocument{id=1755, goods_id=7510, name=韩松, _version_=1566989989370134528}, * SolrDocument{id=1761, goods_id=7510, name=爱韩寒, _version_=1566991216722051072}]}} */ SolrDocumentList documents= queryResponse.getResults();//SolrDocumentList继承于 ArrayList<SolrDocument> System.out.println("numFound="+documents.getNumFound()); System.out.println("start="+documents.getStart()); Iterator iterator= documents.iterator(); while(iterator.hasNext()){ SolrDocument solrDocument=(SolrDocument)iterator.next(); Goods g=new Goods(); g.setGoods_id(solrDocument.get("goods_id")!=null?Integer.parseInt(solrDocument.get("goods_id").toString()):0); g.setName(solrDocument.get("name")!=null?solrDocument.get("name").toString():""); list.add(g);//构建对象 } return null; } /** * 借助solrQuery对象接收查询条件进行检索 * @param queryString * @return * @throws Exception */ public String querySolr03(String queryString) throws Exception{ SolrQuery query = new SolrQuery(); query.setQuery(queryString); query.setStart(0); query.setRows(10); QueryResponse queryResponse; try { queryResponse = client.query(query); System.out.println(queryResponse.toString()); } catch (SolrServerException e) { e.printStackTrace(); } return null; }
public static void main(String[] args) { HttpSolrClientTest httpService = new HttpSolrClientTest(); try {// httpService.insertDataToSolr(); httpService.querySolr02("name:\"韩\"");//直接搜索 不用加*匹配// httpService.deleteSolrIndex();//删除 } catch (Exception e) { e.printStackTrace(); } }}
如果有字段无法添加到solr则代表的是此字段没有在solr中配置。
在solrhome下找到core的目录 (如rusth)的conf,修改里面的managed-schema文件。
在对应的字段下,增加想要的属性。
和下面的
然后重启tomcat即,新增数据,查询看看。
不要在意细节。具体看功能的实现。主要方法位于querySolr02。querySolr01有bug,欢迎高手补充使用方式。
后续,有时间的情况下,会继续扩充使用方式的。
solr 6.5.1的常规使用见最近的几篇文章。
0 0
- sorl 6.5.1的solrj的常规使用
- Solr-6.5.1之Solrj的使用
- SolrJ的使用
- solrj的使用
- Solr solrj的使用
- SolrJ的使用
- SolrJ的使用
- SolrJ的使用
- SolrJ的使用
- solr-solrj的使用
- solrJ客户端的使用
- SolrJ的使用
- solrJ的使用
- SolrJ客户端的使用
- solrJ的使用
- Solr3---SolrJ的使用
- SolrJ客户端的使用
- solrj的简单使用
- 13——句子逆序
- Java 类加载机制详解
- CCF NOI 1037 A^B的个位数
- 新词发现
- 文章测试
- sorl 6.5.1的solrj的常规使用
- Git恢复被修改的文件--未提交到远程仓库
- 设计模式(七)--策略模式
- sublime text插件
- Github Desktop上传项目
- myeclipse导入的工程无法deploy
- 三元组压缩矩阵及解压
- js获取服务器时间
- Spring实战回炉贴-2