【问题标题】:How can i get unique suggestions without duplicates when i use completion suggester?当我使用完成建议时,如何获得没有重复的独特建议?
【发布时间】:2018-12-05 23:41:26
【问题描述】:

我在我的环境中使用弹性 5.1.1。我在字段名称post_hashtags 上选择了完成建议器,并带有一组字符串以对其提出建议。我收到以下前缀“inv”的响应

请求:

POST hashtag/_search?pretty&&filter_path=suggest.hash-suggest.options.text,suggest.hash-suggest.options._source
{"_source":["post_hashtags" ],

"suggest": {
    "hash-suggest" : {
        "prefix" : "inv",
        "completion" : {
            "field" : "post_hashtags"
        }
    }
}

回应:

{
  "suggest": {
    "hash-suggest": [
      {
        "options": [
          {
            "text": "invalid",
            "_source": {
              "post_hashtags": [
                "invalid"
              ]
            }
          },
          {
            "text": "invalid",
            "_source": {
              "post_hashtags": [
                "invalid",
                "coment_me",
                "daya"
              ]
            }
          }
        ]
      }
    ]
  }

这里“invalid”返回两次,因为它也是其他文档中相同字段“post_hashtags”的输入字符串。

问题是,如果相同索引中的 1000 个文档中存在相同的“无效”输入字符串,那么我将获得 1000 个重复的建议,这些建议很大且不需要。

我可以在完成类型的字段上应用聚合吗?

有没有什么方法可以让我获得独特的建议而不是重复的文本字段,即使我在相同索引的多个文档中为特定字段提供了相同的输入字符串?

【问题讨论】:

标签: elasticsearch lucene search-suggestion


【解决方案1】:

ElasticSearch 6.1 引入了skip_duplicates 运算符。用法示例:

{
  "suggest": {
    "autocomplete": {
      "prefix": "MySearchTerm",
      "completion": {
        "field": "name",
        "skip_duplicates": true
      }
    }
  }
}

【讨论】:

    【解决方案2】:

    编辑:此答案仅适用于 Elasticsearch 5

    不,您不能对建议结果进行重复数据删除。自动完成建议器在 Elasticsearch 5 中是面向文档的,因此将为所有匹配的文档返回建议。

    在 Elasticsearch 1 和 2 中,自动完成建议器会自动删除重复的建议。 bring back this functionality 有一个开放的 Github 票证,在未来的版本中看起来是 possible to do so

    目前,您有两种选择:

    1. 使用 Elasticsearch 版本 1 或 2。
    2. 使用不基于自动完成建议器的不同建议实施。到目前为止,我看到的唯一半官方建议是将您的建议字符串放入 separate index

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多