设置es同义词,可以使搜索引擎在不加入算法和机器学习的情况下,优化搜索准确性,
例如,苹果手机和iPhone使同义词,搜索iPhone时,理论上内容为苹果手机的也应该被搜索出来
es本身内置支持了设置同义词,但是不可以热更新,只能每次启动es时才会加载es的同义词词典,所以,我采用的时安装dynamic-synonym插件,进行热更新,避免更新词典后还需要重启es才能使词典生效
下载插件源码
https://github.com/ginobefun/elasticsearch-dynamic-synonym
编码
mvn install
将编译生成的zip文件,拷贝到es 的插件目录,并解压更名为dynamic-synonym
重启es,
设置索引,
PUT test{"settings": {"number_of_shards": 5,"number_of_replicas": 2,"index": {"analysis": {"filter": {"local_synonym": {"type": "dynamic_synonym","synonyms_path": "synonyms.txt","interval": 30},"synonym_graph": {"type": "dynamic_synonym_graph","synonyms_path": "http://122.9.0.48:9000/synonym.txt","interval": 30}},"analyzer": {"synonym": {"tokenizer": "ik_smart","filter": ["synonym_graph"]}}}}},"mappings": {"properties": {"names": {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}},"analyzer": "synonym"}}}}
编辑web访问路径下的synonym.txt文件
例如:
插入文档,并验证

搜索苹果,查询出同义词iphone文档
