Solr
solr是apache下的一个全文检索引擎系统,Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节,自己的应用可以直接利用诸如 .../solr?q=abc 这样的HTTP GET/POST请求去查询,维护修改索引。我们用solr时需要在服务器上单独去部署solr,然后我们在客户端通过它的工具包 solrJ,也就是一个jar包,从而与我们项目关联并从服务器上调用solr服务。
在我认知以及所了解的全文检索引擎系统有solr,Elastic Search,Lucene 三种,而我本次介绍的就是其中之一的solr的部署步骤以及一些入门的简单操作。
部署步骤:
1. 准备一个干净的Tomcat, 没有任何项目都可以运行的.
2. 将solr/example/webapps/solr.war复制到Tomcat/webapps/目录下
3. 运行Tomcat,运行日志会报错, 不要紧, 目的是对solr.war解压
4. 关闭Tomcat并删除Tomcat/wabapps下的solr.war
5. 将solr/example/lib/ext下的所有jar包复制到tomcat/webapps/solr/WEB-INF/lib文件夹下
6. 复制solr/example/solr文件夹到硬盘根目录并改名为solrhome(solrhome: 就是solr的家, 一个solr服务器只能有一个solrhome, 一个solrhome中可以都多个 solrcore, 一个solrcore就是一个solr实例.实例和实例之间是互相隔离的.)
7. 将solrhome的位置复制到Tomcat/webapps/solr/WEB-INf/web.xml中
8. 启动Tomcat, 访问http://localhost:8080/solr看到solr页面后说明部署成功。
部署成功后肯定要进行一些简单的测试demo来检验部署在服务器上的solr是否可以用,
所以我们可以进行一些开发入门的简单操作:
依赖包:Solr服务的依赖包,\solr\example\lib\ext ;solrj依赖包,\solr-4.10.3\dist\solrj-lib;junit
1、 创建HttpSolrServer对象,通过它和Solr服务器建立连接。
2、 创建SolrInputDocument对象,然后通过它来添加域。
3、 通过HttpSolrServer对象将SolrInputDocument添加到索引库。
4、 提交。
然而在进行测试时会遇到一些bug,我们要通过自己使用的软件的控制台看错误及遇到的问题,或者我们可以使用Debug来检测是自己的哪个方面出现的错误。
我自己也是刚对solr有了一些简单的了解,以及对其部署和简单的操作进行了实验,同时也发现了solr不支持第三方条件过滤。例如从倒排中过滤处理一批doc,而这些doc需要与外部源进行doc域值过滤。问题主要是第三方信息动态性太强,不利于直接写索引中去另外solr 在支持中文分词的时候,有很多第三方包可以引入,但需要扩展queryparse有时候,总体看有优势也有劣势。优势是引入方便,劣势是词库、算法体系和lucene的不完全兼容,扩展、完善不是那么容易。
学问尚浅,小弟仍在加倍努力,望各位前辈指点批评。
代码实现:
查询:
添加:
删除: