IK分词器
IK分词器介绍
默认ES中采用标准分词器进行分词,这种方式并不适用于中文网站,因此需要修改ES对中文友好分词,从而达到更佳的搜索的效果。
安装IK分词器
- ES 在v5.5.1版本后开始支持在线安装分词插件
- IK分词插件版本一定要和ES的版本一致
- IK分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik
在线安装
- 将es服务器中原始数据删除
进入es安装目录中将data目录数据删除
1 | rm -rf data |
- 在es安装目录中执行安装命令
1 | elasticsearch/elasticsearch-6.8.0/bin |
- IK分词配置文件和字典位置为
/XXX/elasticsearch/elasticsearch-6.8.0/config/analysis-ik/IKAnalyzer.cfg.xml
- 重启ES生效
- 测试ik安装成功
1 | GET /_analyze |
离线安装
将es服务器中原始数据删除
进入es安装目录中将data目录数据删除
1
rm -rf data
下载对应IK分词器版本
https://github.com/medcl/elasticsearch-analysis-ik/releases
- 解压缩到plugins目录中命名为analysis-ik
- IK分词配置文件和字典位置为
/xxxx/elasticsearch/elasticsearch-6.8.0/plugins/analysis-ik/config/IKAnalyzer.cfg.xml
重启ES生效
测试ik安装成功
1 | GET /_analyze |
测试IK分词器
IK分词器提供了两种mapping类型用来做文档的分词分别是 ik_max_word
和 ik_smart
ik_max_word: 会将文本做最细粒度的拆分
,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;ik_smart: 会做最粗粒度的拆分
,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。
测试数据
1 | DELETE /buubiu |
配置扩展词
IK支持自定义扩展词典
和停用词典
,所谓**扩展词典
就是有些词并不是关键词,但是也希望被ES用来作为检索的关键词,可以将这些词加入扩展词典。停用词典
**就是有些词是关键词,但是出于业务场景不想使用这些关键词被检索到,可以将这些词放入停用词典。
定义扩展词典和停用词典
- 可以修改IK分词器中
config
目录中IKAnalyzer.cfg.xml
这个文件。
NOTE:词典的编码必须为UTF-8,否则无法生效
修改vim IKAnalyzer.cfg.xml
1
2
3
4
5
6
7
8
9
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
</properties>在ik分词器目录下config目录中创建ext_dict.dic文件 编码一定要为UTF-8才能生效
1
vim ext_dict.dic #加入扩展词即可
在ik分词器目录下config目录中创建ext_stopword.dic文件
1
vim ext_stopword.dic #加入停用词即可
重启es生效
定义远程扩展词典和停用词典
开发Spring Boot项目提供远程字典URL接口
修改vim IKAnalyzer.cfg.xml
1 |
|
- 重启es生效