Press "Enter" to skip to content

Solr实战:Solr配置中文分词,自定义分词Text_ik

Last updated on 2020-04-29

配置Ikanalyzer中文分词

本文地址转载自github:https://github.com/magese/ik-analyzer-solr 谢谢大神分享

jar包下载地址:https://search.maven.org/remotecontent?filepath=com/github/magese/ik-analyzer/8.3.0/ik-analyzer-8.3.0.jar
不同版本的地址:https://search.maven.org/search?q=g:com.github.magese%20AND%20a:ik-analyzer&core=gav

        1. 将jar包放入Solr服务的JettyTomcatwebapp/WEB-INF/lib/目录下;
        2. resources目录下的5个配置文件放入solr服务的JettyTomcatwebapp/WEB-INF/classes/目录下;
          ① IKAnalyzer.cfg.xml
          ② ext.dic
          ③ stopword.dic
          ④ ik.conf
          ⑤ dynamicdic.txt
        3. 配置Solr的managed-schema,添加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.LowerCaseFilterFactory"/>
            </analyzer>
            <analyzer type="query">
                <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
          </fieldType>
        4. 启动Solr服务测试分词;
        5. IKAnalyzer.cfg.xml配置文件说明:
          名称 类型 描述 默认
          use_main_dict boolean 是否使用默认主词典 true
          ext_dict String 扩展词典文件名称,多个用分号隔开 ext.dic;
          ext_stopwords String 停用词典文件名称,多个用分号隔开 stopword.dic;
        6. ik.conf文件说明:
          files=dynamicdic.txt
          lastupdate=0
          1. files为动态词典列表,可以设置多个词典表,用逗号进行分隔,默认动态词典表为dynamicdic.txt
          2. lastupdate默认值为0,每次对动态词典表修改后请+1,不然不会将词典表中新的词语添加到内存中。lastupdate采用的是int类型,不支持时间戳,如果使用时间戳的朋友可以把源码中的int改成long即可; 2018-08-23 已将源码中lastUpdate改为long类型,现可以用时间戳了。
        7. dynamicdic.txt 为动态词典
          在此文件配置的词语不需重启服务即可加载进内存中。 以#开头的词语视为注释,将不会加载到内存中。

 

自定义分词测试
这里我们先测试一个分词不正确的词

修改ext.dic文件
vim/usr/local/solr-8.3.0/server/solr-webapp/webapp/WEB-INF/classes/ext.dic

添加 控货

大功告成

Leave a Reply

Your email address will not be published. Required fields are marked *