在 Azure 搜索中,有没有一种方法可以将分面计数的范围限定为 top 参数?
In Azure Search, is there a way to scope facet counts to the top parameter?
如果我有一个包含 10,000,000 个文档和搜索文本的索引并要求检索前 1,000 个项目,有没有办法将构面范围限定到这 1,000 个项目?
我目前的问题是:
我们有一个非常大的索引,包含几个不同的方面,包括制造商。如果我搜索一个产品(例如 WD-40),它会匹配很多不同的文档和文档字段。它找到了产品并且它是得分最高的匹配项,但是因为他们只生产 1 或 2 种产品,所以制造商不会显示为顶级选项,因为它是按数量排序的。
有没有办法将构面的范围限定到前 X 个文档?或者,有没有办法只抓取高于某个 @search.score?
的文档
我没有可用于测试的相关数据集,但我相信 $top 参数可能会满足您的要求。看到这个 link:
https://docs.microsoft.com/en-us/rest/api/searchservice/search-documents#top-optional
也就是说,还有其他方法可以解决您的用例。
标准化您的数据
我不知道你的数据有多干净。但是,对于这种大小的任何数据集,制造商名称不一致是很常见的。例如,您的制造商可能列为
- WD40 公司
- WD-40连
- WDFC
- WD 40
- WD-40 公司
- ...
规范化将大大减少精简器中的值数量。这可能不足以满足您的用例,但仍然值得一试。
考虑添加更多精简程序
当您的精炼器有太多选项时,最好考虑拥有更多具有课程价值的精炼器。例如,一个类别或一个将结果一分为二的简单精炼器。就像“物理 vs. 数字”产品作为首选。或者消费者与专业产品。有现货或待发货。此模式允许用户快速减少结果集,而无需使用品牌精炼器。
用太多选项对精炼器进行分类
在您的情况下,您的制造商精炼机包含太多选项。我见过人们在精简器中添加搜索框的示例。另一种选择是将您的精炼选项分组到桶中。对于像制造商这样的文本值,您可以使用制造商名称的第一个字符生成一个新的 属性。这样你就可以展示一个精炼机,让用户 select 来自 A-Z 的制造商。
精简器的目的是为用户提供缩小结果集的选项。我会说 $top 参数和 returned facet 可以正常工作。当我们考虑时,试图将精炼器的数量限制为基于前 1000 个结果是一个坏主意。您最终会遇到令人困惑的可用性和召回问题。
您对 WD-40 的查询 return 是一个很大的结果集。如此之大,以至于列出了 155347 家独特的制造商。我猜你有几百万的点击率。该查询的目的是 return 名为 WD-40 的产品(我的假设)。但是,由于您在所有类型的内容中搜索所有属性,您最终会得到各种产品,如门、铰链和自行车,这些产品可能有一些文字说“在上面放一些 WD-40 以停止吱吱声”。
我猜你得到的大部分点击都是无关紧要的。因此,您应该默认限制初始查询的范围。例如,限制只搜索标题 属性。或者添加过滤器以排除一类文件(如手册、价目表等)。
您还可以考虑从前端应用程序提交不同的查询。一个检索精简器的范围狭窄的查询和另一个范围更广的查询 return 结果。
如果我有一个包含 10,000,000 个文档和搜索文本的索引并要求检索前 1,000 个项目,有没有办法将构面范围限定到这 1,000 个项目?
我目前的问题是: 我们有一个非常大的索引,包含几个不同的方面,包括制造商。如果我搜索一个产品(例如 WD-40),它会匹配很多不同的文档和文档字段。它找到了产品并且它是得分最高的匹配项,但是因为他们只生产 1 或 2 种产品,所以制造商不会显示为顶级选项,因为它是按数量排序的。
有没有办法将构面的范围限定到前 X 个文档?或者,有没有办法只抓取高于某个 @search.score?
的文档我没有可用于测试的相关数据集,但我相信 $top 参数可能会满足您的要求。看到这个 link:
https://docs.microsoft.com/en-us/rest/api/searchservice/search-documents#top-optional
也就是说,还有其他方法可以解决您的用例。
标准化您的数据 我不知道你的数据有多干净。但是,对于这种大小的任何数据集,制造商名称不一致是很常见的。例如,您的制造商可能列为
- WD40 公司
- WD-40连
- WDFC
- WD 40
- WD-40 公司
- ...
规范化将大大减少精简器中的值数量。这可能不足以满足您的用例,但仍然值得一试。
考虑添加更多精简程序
当您的精炼器有太多选项时,最好考虑拥有更多具有课程价值的精炼器。例如,一个类别或一个将结果一分为二的简单精炼器。就像“物理 vs. 数字”产品作为首选。或者消费者与专业产品。有现货或待发货。此模式允许用户快速减少结果集,而无需使用品牌精炼器。
用太多选项对精炼器进行分类
在您的情况下,您的制造商精炼机包含太多选项。我见过人们在精简器中添加搜索框的示例。另一种选择是将您的精炼选项分组到桶中。对于像制造商这样的文本值,您可以使用制造商名称的第一个字符生成一个新的 属性。这样你就可以展示一个精炼机,让用户 select 来自 A-Z 的制造商。
精简器的目的是为用户提供缩小结果集的选项。我会说 $top 参数和 returned facet 可以正常工作。当我们考虑时,试图将精炼器的数量限制为基于前 1000 个结果是一个坏主意。您最终会遇到令人困惑的可用性和召回问题。
您对 WD-40 的查询 return 是一个很大的结果集。如此之大,以至于列出了 155347 家独特的制造商。我猜你有几百万的点击率。该查询的目的是 return 名为 WD-40 的产品(我的假设)。但是,由于您在所有类型的内容中搜索所有属性,您最终会得到各种产品,如门、铰链和自行车,这些产品可能有一些文字说“在上面放一些 WD-40 以停止吱吱声”。
我猜你得到的大部分点击都是无关紧要的。因此,您应该默认限制初始查询的范围。例如,限制只搜索标题 属性。或者添加过滤器以排除一类文件(如手册、价目表等)。
您还可以考虑从前端应用程序提交不同的查询。一个检索精简器的范围狭窄的查询和另一个范围更广的查询 return 结果。