首页 > 解决方案 > 从认知搜索中检索超过 10 万条结果

问题描述

我有一个包含超过 100,000 个文档的 Azure 搜索索引。它有两个可检索的字段,都是由第三方确定的任意字符串 ID。它有更多可搜索和可排序的字段。

我需要能够检索索引中的每个文档。我的应用程序的消费者可能不提供过滤器或过滤器,从而导致超过 10 万个文档。

我可以处理$top=1000限制,但无论我做什么,$skip=100000限制一直在咬我。我正在使用.NET Core SDK 的v10.1.0。我已经删除了汇总结果的代码,这只是显示了我的循环。

var results = index.Documents.Search("*", searchParameters: new SearchParameters
{
  Top = int.MaxValue // I should have fewer than 2B docs...
});

while (results.ContinuationToken != null)
{
  results = index.Documents.ContinueSearch(results.ContinuationToken);
}

ContinueSearch一旦获得 101k 结果(前 1k 并跳过 100k),它将停止或崩溃,具体取决于我在呼叫周围有什么样的护栏。

我也通过 HTTP 进行了尝试,结果基本相同。

我对任何针对 .NET Core 3.1 的解决方案持开放态度。只要它有效,我就不会与任何特定的软件包甚至语言结婚。

标签: c#.net-coreodataazure-cognitive-search

解决方案


推荐阅读