这些天,我正在使用Elasticsearch完成建议程序,但遇到了一些问题,它总是会产生相似的结果。

假设我搜索以下语句:

    "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是中文特定的分析器,它可以完成标准分析器的工作。

谢谢

最佳答案

弹性建议者会自动对相同的输出进行重复数据删除(至少直到2.x)。我还没有尝试过5.x,并且那里的建议者有一些变化。
问题似乎出在您的索引分析器上,它正在对您的文档建立索引,以便:
"text" : "Nine West","text" : "Nine West ","text" : "NINE WEST","text" : "NINE WEST ",不完全一样。您需要使用分析器为它们建立索引,该分析器将标记小写,并去除多余的空格等。
完成此操作后,您将获得所需的去重复输出的建议。

关于elasticsearch完成建议者产生重复的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39182390/

10-12 12:47