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

2019-03-27 01:07|来源: 网路

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





这块我会持续更新。有做搜索兴趣的朋友可以互相关注。本人在ITeye上的地址是http://lies-joker.iteye.com/


转自:http://www.cnblogs.com/lies-joker/p/3837893

相关问答

更多
  • 我知道的大概有以下这么几种方式 1.在eclipse里搭好了solr的项目,部署到窗口时,先配置运行参数 2.如果你的容器是tomcat,可以修改catalina.bat文件,在第一行加上如下参数
  • 建议的来源使用中文词库
  • tomcat配置数据源solr使用数据源 1、tomcat中配置数据源(注:需要拷贝jdbc相关jar包到tomcat中。tomcat6.x/lib目录下,注意tomcat6.0以下的版本在tomcat5.x/common/lib/目录下) 在server.xml文件,找到“Engine-> Host -> Context”,在其下面配置主要针对某一项目的数据源使用。 在context.xml文件,找到“Context”,在其下面配置可以让所有项目使用。 在Context下面配置数据源如下: 数据源相关参数 ...
  • tomcat配置数据源solr使用数据源 1、tomcat中配置数据源(注:需要拷贝jdbc相关jar包到tomcat中。tomcat6.x/lib目录下,注意tomcat6.0以下的版本在tomcat5.x/common/lib/目录下) 在server.xml文件,找到“Engine-> Host -> Context”,在其下面配置主要针对某一项目的数据源使用。 在context.xml文件,找到“Context”,在其下面配置可以让所有项目使用。 在Context下面配置数据源如下: & ...
  • 看起来您正在使用SolrCloud示例。 在这种情况下,配置被加载到Zookeeper中。 因此,实时版本不在文件系统上,因为它与非云例子相同。 您可以通过管理界面查看,而不是。 如果您只想查看引导配置,它位于server / solr / configsets /中,具体配置取决于您在创建示例时选择的内容。 It looks like you are using SolrCloud example. In which case, the configuration is loaded into Zooke ...
  • 您需要在系统或任何服务器实例中运行Solr服务 ,然后您才能连接并在Solr上执行某些操作。 在maven中指定依赖关系仅对连接到Solr并在Solr服务上执行读/写操作很有用。 例如,如果我们将它与任何数据库系统进行比较,那么您的数据库服务器正在运行某些位置,并且您在应用程序中使用任何jdbc驱动程序来对该RDBMS执行CRUD操作。 您可以按照以下步骤安装和运行Solr 确保已安装Java 从http://lucene.apache.org/solr/下载Solr 将Solr分发存档解压缩到目录 通过发 ...
  • 我建议你几个博文: 我写的这篇文章向您展示了您在Solr中有哪些开箱即用的选项以及为了选择其中一个而需要回答的问题 这个向您展示一个非常好的完整解决方案,该解决方案运行良好但需要进行一些额外的工作,并使用特定的lucene索引(solr core)用于特定目的 I would suggest you a couple of blogpost: This one which shows you a really nice complete solution which works well but requi ...
  • 您可以在搜索方法中添加这样的代码 with(:lab, 'Support') 并在您的模型中添加此项 string :lab The solution was adding without in my gears_controller.rb file. gears_controller.rb def rack1 @gears = Gear.where("Lab like ? OR Lab like ? OR Lab like ?", "%Primary%", "%Mini%", "%Suppo ...
  • Solr核心本质上是在应用程序服务器的相同上下文中运行的多个索引。 你可以认为它为每个用户安装了1个war文件 。 每个核心都以名称分隔,因此您必须自己跟踪哪个网址对哪个用户有效。 例如, http://host.com/solr/usercore1/select?q=test http://host.com/solr/usercore2/select?q=test 它基于config solr.xml :
  • 去Solr 4.10.x. 你会省去很多麻烦。 Solr 5.x中没有太多新东西对Sitecore应用程序有益。 我不确定bitnami安装程序,但据我所知,Sitecore最受欢迎的Solr版本之一是Solr 4.10.4 。 您可以从http://archive.apache.org/dist/lucene/solr/下载它 Go for Solr 4.10.x. You will save a lot of troubles. And there is not much new in Solr 5.x ...