准备工作
最近,有一个小需求如下:
给2段文字,找出两段文字中高度重合词的同义词。
由于需求比较简单(意思也就是这个需求不是那么重要),所以就想省点事,而且最近又在折腾elasticsearch。所以就Google查了下相关的文章。当然这一篇就借鉴了很多前辈的经验。
Elasticsearch
这个参考文档安装就可以了,比较简单。elasticsearch
分词
因为基于elasticsearch,所以可以直接使用对应的中文分词插件elasticsearch-analysis-ik
同义词词典
同样基于elasticsearch,所以首先我们要先看下es的相关文档:Synonym Token Filter
Two synonym formats are supported: Solr, WordNet.
也就是es的同义词词典格式目前支持两种格式,我们这里基本上仅使用Solr这种模式的同义词。
1 | 肯定,确认,认可,认定 |
注意,这里面的逗号是英文的。
关于,词典这块我这里采用了哈工大的同义词词林,下载链接
如果你也使用这个,需要根据Solr模式的同义词格式进行格式化一下。
当然,这个词典最终还是要结合自己的场景做对应的优化。
好了,准备工作到这里基本上差不多了。接下来,开始就是配置的工作了。
同义词配置
首先需要在你的es的config目录下创建analysis文件夹,然后移动synonyms.txt到这个目录下。
创建索引
1 | curl -X PUT \ |
创建映射
1 | curl -X PUT \ |
获取同义词
1 | curl -X POST \ |
1 | { |
以上,就是基于elasticsearch 6.0+elasticsearch-analysis-ik+哈工大同义词词林搭建的一个简单同义词服务。
Reference
https://github.com/medcl/elasticsearch-analysis-ik/issues/93