是否可以在排序的 Azure 搜索索引中找到特定的文档位置



我们有几个使用 25K 个文档的 Cosmos DB 集合作为源的 Azure 搜索索引,每个索引都有大量可用于排序和筛选的文档属性。

我们要求允许用户对文档进行排序和筛选,然后搜索并跳转到分页结果集中的特定文档页面。

是否可以使用排序和筛选来查询 Azure 搜索索引,并从结果集中获取特定文档 ID 的位置/排名?我需要寻找替代选项吗?我相信可能有一种方法可以使用SQL后端来做到这一点,但显然这将是一项要实现的重大任务。

除了编写查询进行分页之外,我还没有找到一种方法来做到这一点,直到我找到所需的文档,就服务器上的处理而言,这将是一项相对昂贵且可能缓慢的任务。

Azure 搜索中没有用于筛选另一个查询的结果集中的机制。您必须翻阅结果,在客户端查找文档 ID。如果您的查询不是很有选择性并且生成许多页面的结果,这可能会很慢,因为$skip实际上会重新评估您指定的页面之前的所有结果。

您可以使用缓存来加快此操作。至少有一个 Azure 搜索客户正在使用 Redis 来缓存搜索结果。如果您的查询具有足够的选择性,您甚至可以将结果缓存在内存中,这样您只需支付一次分页费用。

目前正在尝试这个。 我正在使用两步过程:

  1. 生成查询,但设置$count=true$top=0。 查询结果应包含名为 @odata.count 的字段。
  2. 然后
  3. ,您可以选择一个索引,然后使用$top=1$skip=<index>返回单个条目。 有一个警告:$skip只接受小于 100000 的数字

最新更新