ElasticSearch1.7之ik(中文)分词器的自定义分词扩展方式

随着数据量的越来越大,有一些定义的关键词已经不再是常用词汇,超出了ES自带的ik分词词库范围,比如:“奥利给”等别称和新闻话题词;这就出现了一些现象,如搜索“奥利给”,因为ik词库没有此词,故将词分为若干个字,检索时会将同时含有“奥”、“利”、“给”三个字的新闻都返回,就出现不准确的现象,很严重;

因此,我们要根据客户需求在系统中自定义分词词库,将这些词统一加入到词库中。

 

操作流程:

1. cd 到自己的elasticsearch-1.7.2/config/ik/目录下,可以看到有很多dic(dictionary字典),ik也是基于词典进行分词的 

ElasticSearch1.7之ik(中文)分词器的自定义分词扩展方式

2. 新建目录custom

3. 新建txt文件或dic文件,或者下载词典库(我是复制ik的dic文件并加上自己的短语做测试),如下所示,本人里面加了拓展文件mydic.txt”奥利给”词语

这里一定要注意一定要从第二行开始写入词语或短语,ik不读第一行的词语

ElasticSearch1.7之ik(中文)分词器的自定义分词扩展方式

4. 配置ik自定义词典配置文件

ElasticSearch1.7之ik(中文)分词器的自定义分词扩展方式

 

重启es服务 ;看到自定义词典被加载即可

ElasticSearch1.7之ik(中文)分词器的自定义分词扩展方式

测试:

ElasticSearch1.7之ik(中文)分词器的自定义分词扩展方式

 

ElasticSearch1.7之ik(中文)分词器的自定义分词扩展方式

这里我们就可以认定 ,“奥利给(xxx)”这个词,已经加入到我们ik词典中了!

 

坑:

自定义词典后,只能从重新启动当前开始,以后的数据会被我们自定义的词 分词,之前的数据是无法查到的,除非,把所有数据重新导一边,这是因为ES的索引以及分词都是无法逆向的。