【问题标题】:Azure Search Suggester - Why return duplicate value?Azure 搜索建议器 - 为什么返回重复值?
【发布时间】:2020-04-17 22:56:24
【问题描述】:

当用户在过滤器字段中输入内容时,我想显示一个包含建议的自动完成功能。

我正在尝试为此使用 Azure Search Suggester,但它返回重复值?

例如:

POST /indexes/assets/docs/suggest?api-version=2016-09-01 HTTP/1.1
Host: xxx.search.windows.net
api-key: xxx
Content-Type: application/json

{
    search: 'bank',
    suggesterName: 'sg',
    top:5,
    searchFields: "accountName",
    select: 'accountName'
}

返回的内容:

{
  "@odata.context": "https://xxx.search.windows.net/indexes('assets')/$metadata#docs(accountName)",
  "value": [
    {
      "@search.text": "CAIXA BANK",
      "accountName": "CAIXA BANK"
    },
    {
      "@search.text": "CAIXA BANK",
      "accountName": "CAIXA BANK"
    },
    {
      "@search.text": "BANK OF AMERICA",
      "accountName": "BANK OF AMERICA"
    },
    {
      "@search.text": "BANK OF AMERICA",
      "accountName": "BANK OF AMERICA"
    },
    {
      "@search.text": "BANK OF AMERICA",
      "accountName": "BANK OF AMERICA"
    }
  ]
}

我希望结果包含 5 个不同的 accountName,而不是每个具有相同 accountName 的文档的重复值...

我在这里遗漏了什么?

编辑

这似乎是预期的行为,建议返回不同的文档……这对我来说毫无意义,如果我想检索文档,我会做一个查询,而不是一个建议。

如果我们不能使用它们来填充自动完成字段,建议的用例是什么?

【问题讨论】:

标签: azure-cognitive-search


【解决方案1】:

正如评论中的链接所指出的,Azure 搜索中的 Suggest API 建议文档而不是查询词。 Suggest API 返回与匹配字段关联的文档 ID。常见的用例是查找标题匹配的报纸文章或名称与搜索的术语/短语匹配的产品。

一些客户正在使用 Suggest API 来自动完成搜索字段。在这种情况下,我们建议在客户端对返回的字段进行重复数据删除或使用二级索引。然而,该功能并不是为此而设计的。事实上,我们正在开发一项新功能,该功能会从语料库中建议搜索词用于自动完成目的。当该功能可用时,我将更新线程。

内特

【讨论】:

  • 如果 Suggest API 返回文档,我仍然不明白它与 Search API 有何不同?调用者中的重复数据删除使 Top 参数无用...例如:使用 Top:20 并且所有返回的文档具有相同的值...
  • 很高兴它正在处理中。用例很简单:想想 Google 的建议……返回的是字词,而不是特定的页面。
  • 它们实际上并没有太大的不同。 Suggest API 是 Search 的一个特殊版本,专门针对常用的预先输入的情况,例如搜索词仅部分完成且响应时间很重要等场景。实际上,您可以使用自定义分析器(docs.microsoft.com/en-us/rest/api/searchservice/… ) 除非它已经在 Suggest API 中为您完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2019-10-12
相关资源
最近更新 更多