我有一个索引,其字段是一个字符串集合,其中包含一个标记列表。
是否有人知道查询索引的最有效方法,并使用与标记字符串集合匹配的标记列表?
这是我想要做的非常低效的例子:
/indexes/instruments/docs?api-version=2014-07-31-Preview&$top=10&$skip=0&$count=true&search=*&$filter=universes/any(t: t eq 'U') or universes/any(t: t eq 'B') or universes/any(t: t eq 'E')
在此示例中,tags字段是" universes"。问题是我需要过滤多达30个标签,所以这个查询看起来很糟糕!
答案 0 :(得分:2)
这是表达此查询的正确方法。它在语法上看起来确实很长,但从效率的角度看它应该运行良好。什么将主导响应时间不是这里的术语数量(至少在你提到的数量级),而是匹配集的大小。
10/16/2017更新:请注意,Azure Search现在有一个新的过滤功能search.in(),它为这样的查询提供了更紧凑的表示和更快的执行。更多详细信息和API版本要求:https://docs.microsoft.com/en-us/rest/api/searchservice/odata-expression-syntax-for-azure-search