首页 > 代码库 > solr4.8的安装,配置,使用,搜索,推荐及看法
solr4.8的安装,配置,使用,搜索,推荐及看法
solr4.9发布了,用一个网友的意思,现在solr绝壁是Firefox之外最大的版本帝。公司的solr版本是4.0,这几天决定给升级到4.8(4.9在maven上资源还不够),抽时间在整理下分布式solr.
今天先把solr4.8安装过程写下来,其实和4.0区别不大。
1,环境必须是tomcat7.0以上,jdk7.0以上,jre7.0以上,且配置好环境变量;
2,example\webapps 下的solr.war;
3,solr home,并配置web.xml;
4,拷贝example\lib\ext下的所有jar 到tomcat_home\webapps\solr\WEB-INF\lib下;
5,tomcat_home\webapps\solr\WEB-INF下新建一个classes文件夹,将example\resources下的log4j.properties拷贝过去;
6,启动,bingo!
------------------------程序员的分割线-------------------------
上面的过程,可以实现solr单核,简单的索引,当然这个肯定不是我们想要的。我们想要的远远比这个要多。首先是Multicore,从example\multicore拷贝所有文件到solr_home下,根据solr.xml来配置,实现多核。密切注意schema.xml和solrconfig.xml的配置,建议把schema.xml精简,然后solrconfig对照,避免出现不存在的字段。
多核实现后,是数据库关联,方便对数据库进行导入,目前4.8版本是有bug的,dataimport后页面会一直indexing,实际上已经完成,看不到索引数据库的过程,但是不影响功能。实现数据库导入,需要将contrib和dist放入solr_home下,删掉dist下的war和文件夹,修改solrconfig.xml以及新建指定的dataimport.xml文件,这些与之前版本没有区别。不要忘了导入数据库驱动到solr下的WEB-INFO/lib里。
4.8之后solr又发布新的分词接口,之前solr4.0的接口不能使用,需要中文分词只好重新实现solr的接口,所以小伙伴们选择一个稳定的solr版本,短时间内就不要随意变动了,工作量不小。不过solr4.8还是很值得升级的。目测solr5.0也很快要发布了,观望一个季度吧。有关中文分词,我采用的是ansj分词器,开源,持续更新。方法我会另开篇章来描述。
2014年7月9日更新
加入ansj中文分词器。
我的ansj是最新版的,个人是比较喜欢这个分词器的,github地址在https://github.com/ansjsun/ansj_seg/,有兴趣的朋友可以关注下。我是用最新版的,2.0以上的版本。作者提供了良好的多种方案分词方法以及庞大的算法工具库,看着让人眼花缭乱。如果想和solr结合,需要自己重写solr或者lucene开放的分词接口,我是重写了Analyzer和Tokenizer接口,用类似IK最新版的方法实现中文分词搜索和索引。网上有很多方案,实现方法和我不尽相同,不过solr更新迭代太快,所以还是自己读得懂分词器源码,自己改写来得实在。ansj的三种中文分词,如果索引数据量不大并且用户量不大,建议用NlpAnalysis,具备发现新词等功能;否则保守起见,还是用ToAnalysis比较靠谱(速度很快,亲测超过IK)。
多聊几句有关分词的话吧。之前公司用的是IK,我一直使用,也做过升级。IK算是小巧精悍并且性能良好的分词器了,不过最近两年没有更新,据我观察是国内使用量最高的分词器,资料很多,所以没有太高要求的建议还是用IK,遇到问题都可以解决,减少开发量。因为开源(源码挂在google上,很蛋疼)而且代码很容易读懂,所以二次开发也较为容易,我之前做敏感词过滤曾经改写过,效果良好。目前暂时还是ansj+IK。ansj我是较为推荐的,就目前来看,分词速度以及功能扩展性很强悍,缺点是作者自己不写lucene和solr的接口实现(当然人家是做自然语言不是做搜索的,没必要),其他大神来写的接口很少持续更新,需要自己修改。ansj功能太多,只做搜索的话,会觉得内容很冗余。不过既然是程序员,就不要把自己想象成码农,而是努力往极客的方向靠一靠。一旦理清楚ansj,绝壁会有种豁然开朗的感觉。
2014年7月10日更新
升级到solr4.8.1,修复10个bug。
FastVectorHighlighter 快速高效的高亮,占有IO会更多
solrconfig.xml配置:
<bool name="f.title.hl.useFastVectorHighlighter">true</bool>
schema.xml配置:
<field name="title" type="text_ansj" indexed="true" stored="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true" />
修bug时间到!
warn no appenders could be found for logger ,步奏5检查是否有问题,我之前是把classes写成classses,折腾很久!
<schema name="example core zero" version="1.1">要写成<schema name="example core zero" version="1.1">不然中文搜索效果极差,solr提供的example绝壁是坑货!发现自己搜索效果不理想的请仔细检查schema.xml
提示区!
用中文分词,schema.xml配置很关键,除了从网上粘贴,自己最好还是要看得懂配置文件的真正含义!
solrconfig.xml和schema.xml两个配置文件,建议逐行读懂,读懂的意思就是要理解。
这块我会持续更新。有做搜索兴趣的朋友可以互相关注。本人在ITeye上的地址是http://lies-joker.iteye.com/