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

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
希望大家初步掌握中文分词,有问题可及时反馈

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年呵护

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值