设置es同义词,可以使搜索引擎在不加入算法和机器学习的情况下,优化搜索准确性,
    例如,苹果手机和iPhone使同义词,搜索iPhone时,理论上内容为苹果手机的也应该被搜索出来
    es本身内置支持了设置同义词,但是不可以热更新,只能每次启动es时才会加载es的同义词词典,所以,我采用的时安装dynamic-synonym插件,进行热更新,避免更新词典后还需要重启es才能使词典生效
    下载插件源码
    https://github.com/ginobefun/elasticsearch-dynamic-synonym
    编码
    mvn install
    image.png
    将编译生成的zip文件,拷贝到es 的插件目录,并解压更名为dynamic-synonym
    image.png

    重启es,
    设置索引,

    1. PUT test
    2. {
    3. "settings": {
    4. "number_of_shards": 5,
    5. "number_of_replicas": 2,
    6. "index": {
    7. "analysis": {
    8. "filter": {
    9. "local_synonym": {
    10. "type": "dynamic_synonym",
    11. "synonyms_path": "synonyms.txt",
    12. "interval": 30
    13. },
    14. "synonym_graph": {
    15. "type": "dynamic_synonym_graph",
    16. "synonyms_path": "http://122.9.0.48:9000/synonym.txt",
    17. "interval": 30
    18. }
    19. },
    20. "analyzer": {
    21. "synonym": {
    22. "tokenizer": "ik_smart",
    23. "filter": [
    24. "synonym_graph"
    25. ]
    26. }
    27. }
    28. }
    29. }
    30. },
    31. "mappings": {
    32. "properties": {
    33. "names": {
    34. "type" : "text",
    35. "fields" : {
    36. "keyword" : {
    37. "type" : "keyword",
    38. "ignore_above" : 256
    39. }
    40. },
    41. "analyzer": "synonym"
    42. }
    43. }
    44. }
    45. }

    编辑web访问路径下的synonym.txt文件
    例如:
    image.png
    插入文档,并验证

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