设为首页 收藏本站
查看: 1111|回复: 0

[经验分享] solr多实例配置以及应用中文分词器IKAnalyzer

[复制链接]

尚未签到

发表于 2016-12-16 07:22:38 | 显示全部楼层 |阅读模式
  前面的两篇博客写的有点傻了,这里整理下,写下整个过程:
  参考官方文档:
  http://wiki.apache.org/solr/SolrTomcat

  但是不是完全按照官方文档来的。

一、准备材料:
  从这里下载solr:http://lucene.apache.org/solr/
,我下载的是sorl-1.4.0
  本机上安装tomcat,我装的是apache-tomcat-6.0.29

二、安装 solr 服务
  tomcat根目录我下面称为:$CATALINA_HOME

  自己选择一个规划好的服务目录,比如我选择了:/var/www/run/index/sorl1 用它作为sorl1的$SOLR_HOME
  拷贝配置文件和war到$SOLR_HOME



cp -a /opt/apache-solr-1.4.0/example/solr/* /var/www/run/index/sorl1
cp /opt/apache-solr-1.4.0/dist/apache-solr-1.4.0.war /var/www/run/index/sorl




 










  把索引文件修改为你所希望存放的地方,比如我想存放在$SOLR_HOME/data,则修改为


 




<!-- <dataDir>${solr.data.dir:/opt/solr/example/data}</dataDir> -->
<dataDir>/var/www/run/index/solr1/data</dataDir>
 










  在tomcat的$CATALINA_HOME/conf/Catalina/localhost/下面,创建文件(solr1.xml),新增 Tomcat Context

把 docBase 指向 $SOLR_HOME/apache-solr-1.4.0.war ,把solr/home 指向 $SOLR_HOME,内容为:



<Context docBase="/var/www/run/index/solr1/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/var/www/run/index/solr1"&nbsp; override="true" />
</Context>
 



 










  启动tomcat,在浏览器中访问:http://localhost:8080/solr1
就会发现一切都好了。
  另外:为了兼容,或者说是为了解决中文乱码,则需要指定URIEncoding为UTF-8



<Connector ... URIEncoding="UTF-8"/>
...
</Connector>
 







三、配置多个服务
  如果想配置多个服务怎么办?方案有两种:

1、就是刚才拷贝的example/solr换成example/multicore/,按照这里面的配置出来的就是多实例的

2、也可以这样:


把刚才的文件复制一份,就出来另外个实例。


比如接着刚才的,继续配置site:


1、cp -a /var/www/run/index/solr1 /var/www/run/index/solr2


2、然后修改索引文件位置


3、cp  $CATALINA_HOME/conf/Catalina/localhost/solr1.xml   $CATALINA_HOME/conf/Catalina/localhost/solr2.xml


4、然后修改docBase和solr/home的值为新的位置


5、启动tomcat,你会发现就可以访问 http://localhost:8080/solr2


再增加?以此类推。



四、配置中文分词器
  我还是比较落后,solr是1.4.0采用的lucene-core-2.9.1,所以分词器我采用的是IKAnalyzer3.1.6GA .看作者的说明:http://linliangyi2007.iyunv.com/blog/512577。
  现在的版本应该是:3.2.5stable,可以到这里关注一下:http://code.google.com/p/ik-analyzer/downloads/list ,有高版本的可用下载。要注意对应哦。
  说明下如何使用吧:

比如你要某个字段要中文分词,那么需要

1、在某个实例下的conf/schema.xml配置文件中的types下配置一个fieldType

<fieldType name="text" class="solr.TextField" >
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory14" isMaxWordLength="false"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"
protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory14" isMaxWordLength="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"
protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
   2、在索引字段name上应用

<field name="name" type="text" indexed="true" stored="true" required="true" />





3、拷贝jar包(IKAnalyzer3.1.6GA.jar)到tomcat使用的lib下,两个位置选一个:

$CATALINA_HOME/lib/

$CATALINA_HOME/webapps/solr1/WEB-INF/lib/

选择第二种的话,每个实例注意都要在WEB-INF/lib/下面拷贝该jar包。




然后启动tomcat(可能是重启)你会发现,name上可以根据新的分词器,建立中文索引和中文查询。

你还可以在这里查看分词细节 http://localhost:8080/from/admin/analysis.jsp?highlight=on










  遗漏:最近发现在window机器上,某些配置不行的机器,会出现堆溢出,还是配置多核比较节省内存。接着2的过程,配置多核的例子:


  • 删除$CATALINA_HOME/conf/Catalina/localhost/下面的sorl2或者你还有solr3
  • 重命名solr1.xml为solr.xml,修改solr.xml的内容为:

<Context docBase="/var/www/run/index/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/var/www/run/index/ override="true" />
</Context>

  •  拷贝example\multicore下面的solr.xml到 /var/www/run/index ,修改cores内容为:

<cores adminPath="/admin/cores">
<core name="solr1" instanceDir="solr1" />
<core name="solr2" instanceDir="solr2" />
</cores>
 

  • 删除原来的$CATALINA_HOME/webapps下面的solr1 solr2
  • 启动tomcat拷贝IKAnalyzer3.1.6GA.jar到新的solr下的lib,再重启tomcat,OK.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314831-1-1.html 上篇帖子: 二、SOLR搭建企业搜索平台【中文分词】 下篇帖子: Solr 1.4 Enterprise Search Server Chapter 1: Quick Starting Solr
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表