欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

solr4.8的安装,配置,使用,搜索,推荐及看法

程序员文章站 2024-01-18 10:59:22
...
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.5">不然中文搜索效果极差,solr提供的example绝壁是坑货!发现自己搜索效果不理想的请仔细检查schema.xml

SolrCore 'collection1' is not available due to init failure: Could not load config for solrconfig.xml,linux下会出现的问题,请把example/solr/collection1拷入solr_home下,并且步骤三目录分隔符用/而不是\。



提示区!
用中文分词,schema.xml配置很关键,除了从网上粘贴,自己最好还是要看得懂配置文件的真正含义!
solrconfig.xml和schema.xml两个配置文件,建议逐行读懂,读懂的意思就是要理解。





这块我会持续更新。有做搜索兴趣的朋友可以互相关注。




相关标签: solr ansj