将 top 与 Azure 搜索建议结合使用

Using top with Azure Search Suggestions

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

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

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

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

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

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

对于 $orderby 的查询,结果的顺序首先由 $orderby 中的字段定义,然后如果有任何平局要打破,则按分数定义。

minimumCoverage与排序或$top无关。它与搜索查询的分布方式有关。每个查询都是针对索引的不同子集同时执行的(无论您是否有多个搜索单元,都会发生这种情况)。有时,无论出于何种原因,这些子集之一都无法执行,通常是在您的搜索服务负载过重时。 minimumCoverage 参数提供了一种放宽通常说 "X% of the index must successfully execute the query in order to consider the overall query a success" 的规则的方法(对于 Search,X 默认为 100,对于 Suggest,X 默认为 80)。这是一种在重负载或部分中断的情况下权衡搜索结果完整性以获得更高可用性的方法。