elasticsearch完成建议器产生重复结果

时间:2016-08-27 14:47:10

标签: elasticsearch autocomplete search-suggestion

我正在使用弹性搜索完成建议,并且遇到一些问题,它总是会产生类似的结果。

假设我使用以下语句进行搜索:

    "my_suggestion": {
>         "text": "ni",
>         "completion": {
>             "field": "my_name_for_sug"
>         }
>     }

并获得以下结果:

 "my_suggestion" : [ {
    "text" : "ni",
    "offset" : 0,
    "length" : 2,
    "options" : [ {
      "text" : "Nine West",
      "score" : 329.0
    }, {
      "text" : "Nine West ",
      "score" : 329.0
    }, {
      "text" : "Nike",
      "score" : 295.0
    }, {
      "text" : "NINE WEST",
      "score" : 168.0
    }, {
      "text" : "NINE WEST ",
      "score" : 168.0
    } ]
  } ],

所以问题是如何合并或汇总相同的结果,如“NINE WEST”和“NINE WEST”。

映射是:

    "my_name_for_sug": {
         "type": "completion"
        ,"analyzer": "ik_max_word"
        ,"search_analyzer": "ik_max_word"
        ,"payloads": true
        ,"preserve_separators": false  
    }

其中 ik_max_word 是一个特定于中国的分析仪,它可以完成标准分析仪的工作。

谢谢

1 个答案:

答案 0 :(得分:0)

Elastic Suggesters自动重复删除相同的输出(至少直到2.x)。我还没有试过5.x,那里的建议有一些变化。 问题似乎是您的索引分析器,它正在索引您的文档,以便:

"text" : "Nine West", "text" : "Nine West ", "text" : "NINE WEST", "text" : "NINE WEST ", 不完全一样。您需要使用分析器对其进行索引,该分析器会降低标记,并剥离额外的空间等。 一旦你这样做,你应该得到重复数据删除输出的建议,如你所愿。