中文分词
默认对中文分词的效果并不好,我们添加IK分词。
下载
重新下载:先下载solr8版本对应的ik分词器,分词器GitHub源码地址:https://github.com/magese/ik-analyzer-solr
添加动态加载词典表功能,在不需要重启solr服务的情况下加载新增的词典。
关闭默认主词典请在
IKAnalyzer.cfg.xml
配置文件中设置use_main_dict
为false
。
安装
下载好之后,将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的值。注意修改文件 ,原文件配置的内容可能并不适用于所有项目。
files
为动态词典列表,可以设置多个词典表,用逗号进行分隔,默认动态词典表为dynamicdic.txt
;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字段是否按中文分词了,可以看到一件按照中文的分词习惯进行了分词。
然后执行一下搜索,可以看到搜索"大家"已经能搜到了
本文由mdnice多平台发布
标签:8.11,入门教程,词典,ik,solr,词库,动态,Solr,分词 From: https://www.cnblogs.com/donggongai/p/16844640.html