sbh*_*mra 2 c# asp.net azure azure-cognitive-search
我正在使用Azure搜索索引创建产品的多面搜索。我大约有5个方面可帮助筛选显示的产品列表。
我注意到的一件事是,如果列出了很多要使用构面进行筛选的产品,则属于构面内的较小搜索项不会从索引中返回。
例如(简单起见),如果我的索引中以下方面列出了以下汽车制造商:
我发现斯柯达将不会退货,因为与该制造商链接的搜索结果很少。
当我使用以下查询直接在Azure门户中搜索索引时,可以看到这种情况: facet=<facet-field-name>
经过研究,我遇到了以下解释:
由于分片架构,构面计数可能不准确。每个搜索索引都有多个分片,每个分片均按文档计数报告前N个方面,然后将其合并为一个结果。如果某些分片具有许多匹配值,而其他分片具有更少的匹配值,则您可能会发现结果中某些构面值缺失或计数不足。
尽管此行为可以随时更改,但是如果您今天遇到此行为,则可以通过人为地夸大count:到较大数量以强制每个分片执行完整报告来解决此问题。如果count:的值大于或等于字段中唯一值的数量,则可以保证得到准确的结果。但是,当文档计数很高时,会降低性能,因此请谨慎使用此选项。
基于以上引用,我如何人为地增加计数以解决此问题?还是有人知道更好的方法?
默认构面计数为10。您可以使用count参数作为构面表达式的一部分来指定更大的计数。例如,假设您将REST API与HTTP GET请求一起使用:
facet=myfield,count:100
Run Code Online (Sandbox Code Playgroud)
如果您使用的是.NET SDK:
var parameters =
new SearchParameters()
{
Facets = new[] { "myfield,count:100" }
};
var results = indexClient.Documents.Search("*", parameters);
Run Code Online (Sandbox Code Playgroud)
您可以在《Azure搜索REST API参考》中找到有关构面表达式语法的更多详细信息。
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |