不同的solr需要不同的IK分词器版本,本文给出solr4.4.0和solr5.3.1下的配置方法。
环境:
IK Analyzer 2012FF_hf1 网盘链接 提取码:lodb
solr4.4.0
tomcat7.0.64
准备文件
IK Analyzer 2012FF_hf1.zip
解压IK分词器的压缩包,并将下列文件,复制到 solr-server\tomcat7\webapps\solr\WEB-INF\lib
文件夹下。
IK Analyzer 2012FF_hf1\IKAnalyzer2012FF4Lucene47.jar
将下列文件,复制到solr-server\tomcat7\webapps\solr\WEB-INF\classes
,该文件夹需要自己创建。
IK Analyzer 2012FF_hf1\\classes\ext.dic,此文件也需要自己创建。
IK Analyzer 2012FF_hf1\\IKAnalyzer.cfg.xml
IK Analyzer 2012FF_hf1\\stopword.dic
在solr中使用IK的core对应的conf目录下的schema.xml
,加入如下配置
<!-- 配置带识别同义词功能的,IK分词器, -->
<fieldType name="text_ik_Synonym" class="solr.TextField">
<analyzer type="query" >
<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerTokenizerFactory" useSmart="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
</analyzer>
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerTokenizerFactory" useSmart="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
</analyzer>
</fieldType>
<!--自定义field开始-->
<field name="file_text" type="text_ik_Synonym" indexed="true" stored="true" multiValued="false"/>
<field name="file_author" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="file_keyWord" type="text_ik_Synonym" indexed="true" stored="true" multiValued="true"/>
<!--自定义field结束 -->
使用IKAnalyzer2012FF_u1时,发生“插件初始化失败”(自行对应english),是因为使用的是官方的jar包,其中缺少IKAnalyzerTokenizerFactory,
在不使用同义词时,schema.xlm文件中IK分词器是使用如下配置的(分词器由analyzer标签包裹):
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
如果要写成第4条中,使用
参考:
solr中使用IKAnalyzer配置同义词,停止词,扩展词
环境:
ik-analyzer-7.7.1.jar 网盘链接 提取码:lodb
solr-5.3.1
tomcat7.0.64
solrCloud配置IK分词器,并实现扩展词、同义词、停用词热部署。
目录结构如下
solrCloud
├─service01
│ ├─data
│ ├─datalog
│ ├─logs
│ └─zookeeper-3.4.14
├─service02
├─service03
├─solr-5.3.1
├─solrhome01
│ ├─collection1
│ │ ├─collectionxConf
│ │ ├─conf
│ └─configsets
├─solrhome02
├─solrhome03
├─solrhome04
├─tomcat01
├─tomcat02
├─tomcat03
├─tomcat04
└─启动zookeeper和solr服务器
将IK分词器的jar包拷贝一份至solrCloud\tomcat01\webapps\solr\WEB-INF\lib
解压IK分词器的jar包,并将下列文件拷贝至solrCloud\tomcat01\webapps\solr\WEB-INF\classes
ext.dic
IKAnalyzer.cfg.xml
仍然是在IK分词器解压后的文件夹中,拷贝下列文件至solrCloud\solrhome01\collection1\collectionxConf
ik.conf
dynamicdic.txt
stopword.dic
修改ik.conf
中的内容为
#Thu May 10 13:27:30 CST 2018
files=dynamicdic.txt,synonyms.txt,stopword.dic
lastupdate=1600064370928
在solrCloud\solrhome01\collection1\collectionxConf\schema.xml
中添加IK分词器的配置信息
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopword.dic" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopword.dic" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
参考:
solr7.3 环境搭建 配置中文分词器 ik-analyzer-solr7 详细步骤