在学习ES的IK分词器的时候,遇到了一些小问题,总结一下:
1.下载分词器:
IK分词器的下载在:
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2
不是直接下载源码,版本和es版本对应
2.安装分词器:
直接解压到es的plugins文档下面,新建一个ik的文件夹。
重启es可以看到加载分词器插件成功
3.分词算法:
IK有两个分词算法: ik_smart是最少切分,ik_max_word为最细粒度划分
GET _analyze
{
"analyzer": "ik_smart",
"text": "我爱喝咖啡"
}
会执行为:
而
GET _analyze
{
"analyzer": "ik_max_word",
"text": "我爱喝咖啡"
}
会执行为:
4.自定义分词:
当我执行:
GET _analyze
{
"analyzer": "ik_smart",
"text": "我是鸽子精华"
}
的时候,鸽子精华会被拆分成“鸽子”, 和 “精华” 两个词,但是他作为我的姓名,我想让他拆分为一个词,就需要实现自定义分词。
首先创建一个记事本,添加我们自定义的词组
然后修改后缀保存成dic格式:
这里有一个坑,就是在配置自定义词典的时候,要保存成UTF-8格式,否则会导致分词不可用
然后再XML中引入:
重启ES就可以看到加载自定义词典成功: