`
lies_joker
  • 浏览: 39938 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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.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两个配置文件,建议逐行读懂,读懂的意思就是要理解。





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




0
1
分享到:
评论
8 楼 lies_joker 2014-07-22  
monolithic 写道
我这边用的是mmseg4j ,与最新的solr4.9结合,也挺好的,没用过ansj_seg的,不知道有没有比较的

IK,mm都是比较出名的,相比较而言,ansj稍微低调些,调用起来也没有IK,mm那么成熟,ansj主要是处理自然语言和提取文本方面,如果只是中文分词索引和检索,没有必要用的。
7 楼 monolithic 2014-07-21  
我这边用的是mmseg4j ,与最新的solr4.9结合,也挺好的,没用过ansj_seg的,不知道有没有比较的
6 楼 lies_joker 2014-07-09  
东林碣石 写道
我想问一下楼主,你们公司使用solr建的索引的规模有多大?有几千万doc吗?硬件配置怎么样?

额,我们公司索引是分开的,分成很多core,加在一起几千万肯定是有的,几千万不算大吧,服务器配置很行吧,不太清楚,我们是做了性能负载的,多台服务器分摊压力的。
5 楼 东林碣石 2014-07-09  
我想问一下楼主,你们公司使用solr建的索引的规模有多大?有几千万doc吗?硬件配置怎么样?
4 楼 lies_joker 2014-07-09  
bonait 写道
这只是安装,怎么没有跟中文分词器结合
我写了,网上关于中文分词结合solr的方法实在太多,我之前用的是IK,准备改成ansj,方便二次开发,这个是要另开篇章来写的。中文分词最好是要自己找个好的版本定制下。
3 楼 lies_joker 2014-07-09  
ljl_ss 写道
用Elasticsearch  啥tomcat 啥 1,2,3,4,5 全省了
实际上使用solr的,一般都是web项目,而且多是需要二次开发的,tomcat容器更接地气些。
2 楼 ljl_ss 2014-07-09  
用Elasticsearch  啥tomcat 啥 1,2,3,4,5 全省了
1 楼 bonait 2014-07-08  
这只是安装,怎么没有跟中文分词器结合

相关推荐

Global site tag (gtag.js) - Google Analytics