我正在使用 Azure 搜索构建一个搜索页面。在我的页面上,我有一个搜索框。我想给用户提供建议。为了尝试做到这一点,我使用 Suggestions endpoint在我的索引上。此时,我有一个请求,其中包含以下查询字符串:
search=sta&suggesterName=sites&$top=3
我的问题是,top如何确定返回哪三个结果?是在搜索索引时遇到的前三个匹配项吗?或者是别的什么?根据 URL 结构,我认为它没有使用评分配置文件。所以,我排除了相关性。但后来我开始阅读有关 minimumCoverage
字段的内容,我感到很困惑。
如果 suggest
端点仅返回它遇到的第一个 [top
] 匹配项,那么为什么还需要 minimumCoverage
字段?
最佳答案
一般来说,$top
会根据查询其余部分指定的顺序为您提供前 N 个结果。对于没有 $orderby
的查询,排序顺序按相关性得分降序排列。这适用于建议
和搜索
。
请注意,仅仅因为您没有评分配置文件(例如使用 Suggest
),并不意味着 Azure 搜索不会计算每个文档的相关性分数。评分配置文件可以影响分数,但并不能完全定义分数。
对于使用 $orderby
的查询,结果的顺序首先由 $orderby
中的字段定义,然后根据分数(如果有任何关系)定义坏了。
minimumCoverage
与排序或 $top
无关。它与搜索查询的分发方式有关。每个查询都会针对索引的不同子集同时执行(无论是否有多个搜索单元都会发生这种情况)。有时,无论出于何种原因,这些子集之一都无法执行,通常是在您的搜索服务负载过重时。 minimumCoverage
参数提供了一种放宽规则的方法,该规则通常表示“索引的 X% 必须成功执行查询才能认为整个查询成功”(默认情况下 X 为 100 >搜索
和默认情况下80为建议
)。这是一种在重负载或部分中断的情况下权衡搜索结果完整性和更高可用性的方法。
关于azure - 将 top 与 Azure 搜索建议结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754973/