Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word)

一、安装IK分词器

Elasticsearch也需要安装IK分析器以实现对中文更好的分词支持。

去Github下载最新版elasticsearch-ik

https://github.com/medcl/elasticsearch-analysis-ik/releases

Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word)_第1张图片

 

 

将ik文件夹放在elasticsearch/plugins目录下,重启elasticsearch。

Console控制台输出:

[2019-09-04T08:50:23,395][INFO ][o.e.p.PluginsService ] [THINKPAD-T460P] loaded plugin [analysis-ik]

二、测试分词效果

IK分词器有两种分词模式:ik_max_word和ik_smart模式。

1、ik_max_word

会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。

2、ik_smart

会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。

测试两种分词模式的效果。分词查询要用GET、POST请求,需要把请求参数写在body中,且需要JSON格式。

发送:post localhost:9200/_analyze

(1)测试ik_max_word

POST _analyze

{

"analyzer": "ik_max_word",

"text":"中华人民共和国人民大会堂"

}

 

 Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word)_第2张图片

 

 (2)测试ik_smart

POST _analyze

{

"analyzer":"ik_smart",

"text": "中华人民共和国人民大会堂"

}

Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word)_第3张图片

 

 

网上关于两种分词器使用的最佳实践是:索引时用ik_max_word,在搜索时用ik_smart。

即:索引时最大化的将文章内容分词,搜索时更精确的搜索到想要的结果。

不过,需要注意的是:ik_smart 分词结果并不是 ik_max_word的子集。这样,在使用ik_max_word 建索引,用ik_smart 搜索时,有可能结果匹配不上,所以这是两种不同类型的分词结果,建议还是不要混用。

下面测试【5号电池】,在两种分词模式下的输出结果。

Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word)_第4张图片

 

 Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word)_第5张图片

 

 

三、扩展词典

在elasticsearch/plugins/ik/config下新建my.dic文件,在my.dic中写入想要分词识别的文字;修改IKAnalyzer.cfg.xml文件,在中指定my.dic。

<properties>

<comment>IK Analyzer 扩展配置comment>



<entry key="ext_dict">my.dicentry>



<entry key="ext_stopwords">entry>









properties>

 

重启elasticsearch即可看到分词效果。

 

你可能感兴趣的:(Elasticsearch 7.x - IK分词器插件(ik_smart,ik_max_word))