Solr8.0速成系列 | Solr整合IKAnalyzer分词器 05

版权声明:专注于技术分享,原创版权归 十年呵护所有,转载请标明原文链接,更多信息可关注 wwws.shinians.com 官网 https://blog.csdn.net/zzhuan_1/article/details/90212278

Solr默认不支持中文分词,我们可以配置Solr自带的中文分词或者IK分词

ikAnalyzer分词 

1、先下载solr对应版本的ik分词器,下载地址:

https://search.maven.org/search?q=com.github.magese

分词器GitHub源码地址:https://github.com/magese/ik-analyzer-solr7

2.将下载好的jar包放入solr-7.4.0/server/solr-webapp/webapp/WEB-INF/lib目录中

3.将resources目录下的5个配置文件放入solr服务的Jetty或Tomcat的webapp/WEB-INF/classes/目录下;(如果无classes新建一个)

 IKAnalyzer.cfg.xml、 ext.dic、 stopword.dic、 ik.conf、 dynamicdic.txt

注意修改文件stopword.dic,ext.dic的编码方式为无BOM的UTF-8编码方式

至此IK扩充词典配置完成,需要注意几点:

1)词典文件必须是UTF-8无BOM格式的,否则配置了,词典也不会生效。

2)项目编码是UTF-8,在Properties中设置。

3)IKAnalyzer.cfg.xml和词典路径问题。词典路径可以随意放,但是IkAnalyzer.cfg.xml必须放在src根目录下。补充一句配置词典路径的时候,路径中com前不要加“/”,否则找不到词典。

4)若中途修改了词典,需要重新刷新下项目,修改的词典才能生效。
 

4.server/solr/coreXX/conf目录中打开managed-schema文件,增加如下代码

<!-- 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)IKAnalyzer.cfg.xml 是配置扩展词库的配置文件,可以看一下里面的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 扩展配置</comment>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">ext.dic;</entry> 
    
    <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">stopword.dic;</entry> 
</properties>


可以写多个扩展词库,只要用 ; 分隔即可
 

ext.dic添加扩展词  成记  是架 

未添加扩展词之前:

添加扩展词之后:

solr自带分词中文分词器 

因为自带的分词效果以及扩展性不是很好,我们这就暂时不采用这种了

1、复制jar包

 cp contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-7.4.0.jar  server/solr-webapp/webapp/WEB-INF/lib

2.配置

<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
        </analyzer>
    </fieldType>

End
希望大家初步掌握中文分词,有问题可及时反馈

猜你喜欢

转载自blog.csdn.net/zzhuan_1/article/details/90212278