中文分词

默认对中文分词的效果并不好,我们添加IK分词。

下载

重新下载:先下载solr8版本对应的ik分词器,分词器GitHub源码地址:https://github.com/magese/ik-analyzer-solr

添加动态加载词典表功能,在不需要重启solr服务的情况下加载新增的词典。

关闭默认主词典请在​​IKAnalyzer.cfg.xml​​​配置文件中设置​​use_main_dict​​​为​​false​​。

​ik-analyzer-8.5.0.jar下载地址​

安装

下载好之后,将IK对应的jar将下载好的jar包放入solr-8.11.2/server/solr-webapp/webapp/WEB-INF/lib目录中,然后在server\solr-webapp\webapp\WEB-INF\下面创建一个classes的目录,将jar包中的5个文件(IKAnalyzer.cfg.xml , ext.dic和stopword.dic,dynamicdic.txt,ik.conf)复制到这个classes目录下。

stopword.dic和ext.dic分别为禁止词词库和扩展词库,注意,词库的的编码方式为UTF-8 无BOM的编码方式,添加新词的时候,需要注意。

dynamicdic.txt为动态词库需要配合ik.conf使用,

ik.conf中配置动态词库文件名,及上次修改版本号lastupdate,每次修改动态词库,需要更新lastupdate的值。注意修改文件 ,原文件配置的内容可能并不适用于所有项目。

  1. ​files​​​为动态词典列表,可以设置多个词典表,用逗号进行分隔,默认动态词典表为​​dynamicdic.txt​​;
  2. ​lastupdate​​​默认值为​​0​​​,每次对动态词典表修改后请+1,不然不会将词典表中新的词语添加到内存中。​​lastupdate​​​采用的是​​int​​​类型, ​​lastUpdate​​​为​​long​​类型,可以用时间戳。

dynamicdic.txt为动态词库,在此文件配置的词语不需重启服务即可加载进内存中。 以​​#​​开头的词语视为注释,将不会加载到内存中。

配置

编辑core的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>

将description字段设置为text_ik类型,重新导入数据。注意:一定要重新导入数据。

查询

到core的分词菜单中验证一下description字段是否按中文分词了,可以看到一件按照中文的分词习惯进行了分词。

Solr 8.11入门教程(4)中文分词_加载

然后执行一下搜索,可以看到搜索"大家"已经能搜到了

Solr 8.11入门教程(4)中文分词_加载_02