Elasticsearch词库扩充实践

        我们知道ES(Elasticsearch)有一个默认的ik分词器,国内用户也可以安装中文分词插件。但这些往往不能满足实际的项目需求,今天就和大家交流一下ES如何扩充自定义词库。话不多说,直奔主题。

一、添加用户词典

       在ES的安装路径下找到配置目录custom(如果没有就mkdir),创建用户自定义的词典myTest.dic。这里新添加用户自定义词典,不建议在ES自带的词典里做修改!

自带词典:

用户词典:

二、在用户词典中加入分词词汇

       编辑刚刚添加的用户词典myTest.dic,加入用户需要的词汇,这里从《中国当代毒品犯罪隐语研究》(欧阳国亮、陈曼  著)一书中的196-215页挑选如下词汇加入词典:

Elasticsearch词库扩充实践_第1张图片

 三、将用户词典写入配置文件

       ES词典的配置文件为IKAnalyzer.cfg.xml。编辑该文件,加入我们自定义的词典:

Elasticsearch词库扩充实践_第2张图片

四、重启ES

      这一步,重启ES(查看ES进程并kill掉,然后重启)保证刚刚加入配置的词典生效:

五、测试

①创建测试索引

Elasticsearch词库扩充实践_第3张图片

②创建映射mapping

Elasticsearch词库扩充实践_第4张图片

③插入数据

Elasticsearch词库扩充实践_第5张图片

④测试

检索"停":

Elasticsearch词库扩充实践_第6张图片

检索"停阿磨":

Elasticsearch词库扩充实践_第7张图片

⑤分析和总结

       我们可以看到步骤④的测试中,我们检索"停"的时候,并不会出现我们插入的id为1的那条数据(content为"停阿磨烫片子四号客屁儿货朵多"),是因为"停阿磨"已经作为一个分词了!而我们检索"停阿磨"的时候,按照打分规则首先匹配到id为1的数据,然后根据相似度匹配到包含"磨"的记录,表示"停阿磨"分词成功!

你可能感兴趣的:(ElasticSearch)