我们在网站的仅订户区域,用户可以在其中搜索自己拥有的物品。用户目前最多可以拥有200,000件商品。根据Microsoft的说法,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秒才能返回结果,而普通搜索则需要约0.5秒。 search.in(...)
可以获取项目ID的列表,并将其与索引中的项目ID(键字段,可过滤)进行比较。
有更好的方法吗?我真的很想将搜索时间缩短至<1秒。