首页 > 解决方案 > Azure 认知搜索:仅搜索用户拥有的内容 - 超过 10 万个项目

问题描述

我们的网站有一个仅限订阅者的区域,用户可以在其中搜索他们拥有的项目。目前,用户最多可以拥有的物品约为 200,000 件。据微软称,search.in(...)它可用于“以亚秒级响应时间过滤数千个值”。

https://docs.microsoft.com/en-us/azure/search/search-security-trimming-for-azure-search

实现安全过滤的一种方法是通过对等式表达式的复杂析取:例如,Id eq 'id1' 或 Id eq 'id2',等等。这种方法容易出错,难以维护,并且在列表包含数百或数千个值的情况下,会使查询响应时间减慢许多秒。

一种更简单、更快捷的方法是通过 search.in 函数。如果您使用 search.in(Id, 'id1, id2, ...') 而不是等式表达式,则可以预期亚秒级响应时间

传入 ~150k 值到search.in(...)返回结果大约需要 4-8 秒,而正常搜索需要 ~.5 秒。这是通过search.in(...)获取项目 ID 列表并将它们与我们索引中的项目 ID(关键字段,可过滤)进行比较。

有一个更好的方法吗?我真的很想将搜索时间缩短到 < 1 秒。

标签: c#asp.netazure-cognitive-search

解决方案


推荐阅读