小编Adi*_*tti的帖子

当我使用完成建议器时,如何在没有重复的情况下获得独特的建议?

我在我的环境中使用弹性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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

回应:

{
  "suggest": {
    "hash-suggest": [
      {
        "options": [
          {
            "text": "invalid",
            "_source": {
              "post_hashtags": [
                "invalid"
              ]
            }
          },
          {
            "text": "invalid",
            "_source": {
              "post_hashtags": [
                "invalid",
                "coment_me",
                "daya"
              ]
            }
          }
        ]
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

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

问题是如果相同索引中的1000个文档中存在相同的"无效"输入字符串,那么我将得到1000个重复的建议,这是巨大的,不需要.

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

有没有什么方法可以得到唯一的建议而不是重复的文本字段,即使我有相同的输入字符串给同一索引的多个文档中的特定字段?

lucene elasticsearch search-suggestion

8
推荐指数
1
解决办法
2252
查看次数

标签 统计

elasticsearch ×1

lucene ×1

search-suggestion ×1