全文索引----solr客户端工具solrJ
2016-04-27 20:09
344 查看
上一篇博客中,我们使用solr的桌面客户端工具展示返回的数据,如果我们需要在程序中使用这些返回值的话,就需要另外的一个工具了----solrJ。
一 solrJ介绍
1 是什么?
为了方便的操作solr服务器,Apache为我们提供了solrJ工具,我们可以通过solrJ对solr服务器进行创建索引、更新、查询、处理返回值等操作,它其实相当于solr服务器和我们程序进行数据通信的桥梁。
2 环境配置
要使用solrJ工具,我们必须导入相应的jar包,这里推荐使用maven工具,因为低版本jar包没有HttpSolrServer对象,并且不支持对solr服务器中数据的删除,所以建议使用高版本jar包,本人使用4.0.0版本jar包,在pom文件中配置如下:
下边我们开始solrJ旅程。
二 重要对象介绍
1 HttpSolrServer
此对象用于连接solr服务器,所有的对solr服务器的增删改查都由此对象完成,我们可以称他为solr客户端的核心对象。
2 SolrQuery
此对象用于封装查询条件,我们可以将我们的查询条件包括分组、排序等全部封装到这个对象中,然后由HttpSolrServer对象来执行查询对象。
3 QueryResponse
从名字可以看出来,这个对象是对response对象的封装,这个对象是用来封装返回值的,我们可以通过这个对象得到solr服务器的返回数据。
4 SolrDocumentList
这是一个集合对象,是solr服务器返回值的对象,类似jdbc中的ResultSet,我们得到我们想要的结果,通过一次简单迭代就可以。
三 实现
1 连接服务器
我们继续使用我们上篇播客中的solr服务器,使用HttpSolrServer连接服务器,代码如下:
2 清空现有索引
3 构造索引
4 设置查询条件
5 处理查询结果
6 结果
声明:如无特殊声明,本系列博客以solr-4.7.2版本为例,如有错误,敬请斧正。
一 solrJ介绍
1 是什么?
为了方便的操作solr服务器,Apache为我们提供了solrJ工具,我们可以通过solrJ对solr服务器进行创建索引、更新、查询、处理返回值等操作,它其实相当于solr服务器和我们程序进行数据通信的桥梁。
2 环境配置
要使用solrJ工具,我们必须导入相应的jar包,这里推荐使用maven工具,因为低版本jar包没有HttpSolrServer对象,并且不支持对solr服务器中数据的删除,所以建议使用高版本jar包,本人使用4.0.0版本jar包,在pom文件中配置如下:
<dependency> <artifactId>solr-solrj</artifactId> <groupId>org.apache.solr</groupId> <version>4.0.0</version> <type>jar</type> <scope>compile</scope> </dependency>
下边我们开始solrJ旅程。
二 重要对象介绍
1 HttpSolrServer
此对象用于连接solr服务器,所有的对solr服务器的增删改查都由此对象完成,我们可以称他为solr客户端的核心对象。
2 SolrQuery
此对象用于封装查询条件,我们可以将我们的查询条件包括分组、排序等全部封装到这个对象中,然后由HttpSolrServer对象来执行查询对象。
3 QueryResponse
从名字可以看出来,这个对象是对response对象的封装,这个对象是用来封装返回值的,我们可以通过这个对象得到solr服务器的返回数据。
4 SolrDocumentList
这是一个集合对象,是solr服务器返回值的对象,类似jdbc中的ResultSet,我们得到我们想要的结果,通过一次简单迭代就可以。
三 实现
1 连接服务器
我们继续使用我们上篇播客中的solr服务器,使用HttpSolrServer连接服务器,代码如下:
String url = "http://192.168.22.216:8983/solr"; HttpSolrServer server = new HttpSolrServer(url); server.setSoTimeout(3000); // socket read timeout server.setConnectionTimeout(1000); server.setDefaultMaxConnectionsPerHost(1000); server.setMaxTotalConnections(10); server.setFollowRedirects(false); // defaults to false server.setAllowCompression(true); server.setMaxRetries(1);
2 清空现有索引
try { server.deleteByQuery("*:*"); } catch (SolrServerException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); }
3 构造索引
//构造document1 SolrInputDocument doc1 = new SolrInputDocument(); doc1.addField( "id", "id1", 1.0f ); doc1.addField( "name", "doc1", 1.0f ); doc1.addField( "price", 10 ); //构造document2 SolrInputDocument doc2 = new SolrInputDocument(); doc2.addField( "id", "id2", 1.0f ); doc2.addField( "name", "doc2", 1.0f ); doc2.addField( "price", 20 ); //构造document集合 Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); docs.add(doc1); docs.add(doc2); //将documents提交给solr try { server.add(docs); } catch (SolrServerException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } //提交一个commit(方法一) try { server.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
4 设置查询条件
//设置查询条件 SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.addField("name"); query.setStart(0); query.setRows(4); query.addSortField("id", SolrQuery.ORDER.desc); //query.addSortField("auction_point", SolrQuery.ORDER.asc);
5 处理查询结果
//处理查询结果 QueryResponse qrsp = null; try { qrsp = server.query(query); } catch (SolrServerException e) { e.printStackTrace(); } SolrDocumentList docsT = qrsp.getResults(); Iterator i = docs.iterator(); while(i.hasNext()){ System.out.println(i.next()); }
6 结果
声明:如无特殊声明,本系列博客以solr-4.7.2版本为例,如有错误,敬请斧正。
相关文章推荐
- 在Eclipse中运行Solr 基础知识
- Solr 5.3.0集成mmseg4j、tomcat部署、Solrj 5.3.0使用
- Solr基础--设置solr/home的三种方式
- windows下安装solr5.5.0
- Docker使用supervisor构建solr
- solr4.0安装和简单导入mysql数据
- Solr 4.0 基础教程
- 自译Solr in action中文版
- Solr In Action 中文版 第一章(一)
- Solr In Action 中文版 第一章 (二)
- Solr In Action 中文版 第一章(三)
- 基于solr实现hbase的二级索引
- 基于Nutch&Solr定向采集解析和索引搜索的整合技术指南文档
- 基于Nutch&Solr定向采集解析和索引搜索的整合技术指南文档
- Tomcat/Solr4.3.1 配置过程
- Solr Facet技术的应用与研究
- Apache Solr查询语法
- Solr客户端删除数据的方式
- Solr5.4 在 Tomcat 部署
- Installing Solr On Oracle Linux 7.4