【问题标题】:Using top with Azure Search Suggestions将 top 与 Azure 搜索建议结合使用
【发布时间】:2016-04-21 10:19:58
【问题描述】:

我正在使用 Azure 搜索构建搜索页面。在我的页面上,我有一个搜索框。我想向用户提供建议。为了做到这一点,我在我的索引上使用了Suggestions endpoint。此时,我有一个包含以下查询字符串的请求:

search=sta&suggesterName=sites&$top=3

我的问题是,top 如何确定返回哪三个结果?它是通过搜索索引时遇到的前三个匹配项吗?或者是别的什么?基于 URL 结构,我认为它没有使用评分配置文件。所以,我排除了相关性。但后来我开始阅读有关 minimumCoverage 字段的信息,我感到很困惑。

如果 suggest 端点只返回它遇到的第一个 [top] 匹配项,那么为什么还需要 minimumCoverage 字段呢?

【问题讨论】:

    标签: azure azure-cognitive-search


    【解决方案1】:

    一般来说,$top 会根据查询的其余部分指定的顺序为您提供前 N 个结果。对于没有$orderby 的查询,排序顺序按相关性分数降序排列。这适用于Suggest 和Search。

    请注意,仅仅因为您没有评分配置文件(例如 Suggest),这并不意味着 Azure 搜索不会计算每个文档的相关性分数。评分资料会影响评分,但并未完全定义评分。

    对于带有$orderby 的查询,结果的顺序首先由$orderby 中的字段定义,如果有任何要打破的关系,则由分数定义。

    minimumCoverage 与订购或$top 无关。它与搜索查询的分布方式有关。每个查询都针对索引的不同子集同时执行(无论您是否有多个搜索单元,都会发生这种情况)。有时,这些子集之一由于某种原因无法执行,通常是在您的搜索服务负载过重时。 minimumCoverage 参数提供了一种放宽规则的方法,该规则通常说“X% 的索引必须成功执行查询才能认为整个查询成功”(对于 Search,X 默认为 100,默认为 80对于Suggest)。这是一种在高负载或部分中断的情况下权衡搜索结果的完整性以获得更高可用性的方法。

    【讨论】:

    • 感谢您的回复。不过,在建议的背景下,我对$top 仍然有点不清楚。如果我使用suggest 查询,是否仍然考虑相关性? suggest 端点没有 scoringProfile 参数,就像 search 端点一样。这是否意味着仍然会针对建议进行评分,并且只使用搜索索引中的defaultScoringProfile?感谢您解决这个问题!
    • 对不起,原来的答案不清楚。我还意识到我误会了 Search 和 Suggest 之间的差异。我已经编辑了我的答案,使其更加清晰和正确。如果仍然无法回答您的问题,请告诉我。
    • 感谢您的清理。现在对我来说很有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多