【问题标题】:Get all `Facets` from azure search without item result从没有项目结果的天蓝色搜索中获取所有“方面”
【发布时间】:2020-06-22 11:02:51
【问题描述】:

大家好,我正面临azure cognitive search 的性能问题,目前我已提交956 Facets

当我从 Azure 服务器加载 Documents 时,几乎需要 30 到 35 秒。

但是当我从 Azure 搜索请求中删除 Facets 时,Documents 会在 2 到 3 秒内加载。

为此,我创建了 2 个 API

  1. 第一个 API 加载来自 azure 服务器的文档结果。
  2. 第二个 API 从 azure 服务器加载所有 Facets

有没有办法只加载Facets

代码从 azure 服务器获取文档。

DocumentSearchResult<AzureSearchItem> results = null;
ISearchFilterResult searchResult = DependencyResolver.Current.GetService<ISearchFilterResult>();
WriteToFile("Initiate request call for search result ProcessAzureSearch {0}");
results = searchServiceClient.Documents.Search<AzureSearchItem>(searchWord, parameters);
WriteToFile("Response received for search result {0}");

【问题讨论】:

  • 所以如果你做一个分面搜索,你只想返回分面而不是文档+分面。那是对的吗?您能否编辑您的问题并包含有关 parameters 的详细信息?
  • 是的,我只想要方面。
  • 请编辑您的问题并包含有关参数的详细信息。基本上我想看到的是你是如何构造这个对象的。
  • @GauravMantri-AIS 在图像中添加了参数详细信息,您可以检查一下吗?
  • 如果我没有通过facets,那么文档会快速返回,但在这里我可以看到计数与facets 结果不匹配。

标签: azure azure-cognitive-search azure-container-service


【解决方案1】:

分面是对匹配结果执行的聚合操作,当有很多不同的存储桶时会非常密集。我无法评论延迟的具体增加,但向查询添加方面肯定会对性能产生影响。

由于 faceting 计算匹配文档的聚合,它必须在后端运行查询,但正如 Gaurav 所提到的,指定 top = 0 将阻止实际检索,因为它不需要包含在响应中。这可以提高性能,尤其是在单个文档很大的情况下。

另一种可能性是先只运行查询,然后使用标识符字段过滤带有构面的文档。由于过滤比查询更快,因此整体延迟应该会有所改善。仅当您能够从第一个 API 调用中识别结果文档的 id 组时,这才有效。

一般来说,如果需要在具有高基数的字段上运行分面查询,我建议明智地使用分面并重新评估设计。这是关于优化搜索性能的文档,您可以查看 - https://docs.microsoft.com/en-us/azure/search/search-performance-optimization

【讨论】:

    【解决方案2】:

    SearchParameters 有一个名为Top 的属性,它指示搜索服务返回这些文档数量。

    获取或设置要检索的搜索结果的数量。这可以是 与 $skip 配合使用,实现客户端分页 搜索结果。如果结果由于服务器端分页而被截断, 响应将包含一个可用于 为下一页结果发出另一个搜索请求。

    一种可能的解决方案是在您的 Facets API 中将此值设置为 0,在这种情况下,搜索服务将不会返回任何文档。

    不过,我不确定这种方法对性能的影响。我只是用一组非常小的数据进行了尝试,对我来说效果很好。

    【讨论】:

    • 感谢您的回答检查并回复您:)
    • 我们确定 Top=0 返回 0 个文档吗?我刚试了一下,它返回了 50 个文档。 Top=1 返回 1 个文档,这就是我用来“优化”的东西,但以某种方式表示“不返回任何文档,我所追求的只是构面数据”会很棒。
    • edit:看起来你必须在 1) SearchParameters.Top 和对 .Search() 的实际调用中都传递 Top=0。然后它返回 0 个文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2017-08-14
    • 2016-07-31
    • 2021-01-29
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多