在使用Elasticsearch 进行搜索中文时,Elasticsearch 内置的分词器会将所有的汉字切分为单个字,对于习惯中文的一些形容词、常见名字等无法优雅的处理,此时就需要用到一些开源的分词器,目前用的最多的就是IK分词器(项目地址:https://github.com/medcl/elasticsearch-analysis-ik

安装

IK分词器的安装十分简单,使用下面命令即可:

elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.4.1

注意这里的版本要和Elasticsearch版本一致,否则会报错

java.lang.IllegalArgumentException: Plugin [analysis-ik] was built for Elasticsearch version 8.4.1 but version 8.4.2 is running

当看到下面的输出就表示安装完成:

-> Installed analysis-ik
-> Please restart Elasticsearch to activate any plugins installed

重启Elasticsearch即可

systemctl restart elasticsearch

模式

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。

自定义词库

如果要让分词器支持一些专有词语,可以自定义词库。

IK分词器自带一个main.dic的文件,此文件为词库文件,这个文件在/etc/elasticsearch/analysis-ik/main.dic

注意这个文件格式必须为utf-8(不要选择utf-8 BOM)。

0

本文为原创文章,转载请注明出处,欢迎访问作者网站(和而不同)

发表评论

error: Content is protected !!