zh-hongda

搜索引擎-solr配置IK分词器

Solr配置IK分词器记录。

solr配置IK分词器

不同的solr需要不同的IK分词器版本,本文给出solr4.4.0和solr5.3.1下的配置方法。

1

环境:

IK Analyzer 2012FF_hf1 网盘链接 提取码:lodb

solr4.4.0

tomcat7.0.64

  1. 准备文件

    IK Analyzer 2012FF_hf1.zip

  2. 解压IK分词器的压缩包,并将下列文件,复制到 solr-server\tomcat7\webapps\solr\WEB-INF\lib文件夹下。

    IK Analyzer 2012FF_hf1\IKAnalyzer2012FF4Lucene47.jar

  3. 将下列文件,复制到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

  4. 在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结束  -->
    

    appendix

    使用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条中,使用标签包裹分词器的话,就需要用到继承了TokenizerFactory类的子类。 大家可以写一个TokenizerFactory类编译后重新打包,也可以在网上找一个已经处理过额IK包。

参考:

solr中使用IKAnalyzer配置同义词,停止词,扩展词

2

环境:

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 详细步骤

solr7 ik中文分词器 动态加载(热更新)扩展词字典表(词库)

solr6.3.0升级与IK动态词库自动加载

IK分词器github地址