我想执行一个看起来像SELECT * FROM c的DocumentDB查询,其中c.teams IN(@teamsList)AND CONTAINS(c.text,“some string”)
问题是上面的查询是计算密集型的并且几乎超过了我们的S3集合限制(此查询占用2400RU并且我们的数据集快速增长,我们将很快达到包含的扫描限制)。
我知道Azure搜索是一种更有效的方式或搜索可索引字段。我的问题是如何有效地将Azure搜索的结果与其他查询字段合并,在我的示例中,按团队列表限制它。我们感兴趣的是公开“查询构建器”(类似示例可用here),其中CONTAINS是任何字段上的允许操作数。
答案 0 :(得分:0)
如果您想使用DocumentDB进行CONTAINS字搜索并避免扫描(而不使用Azure搜索),您可以执行以下操作:
text
标记为一个单词数组。您可以使用像Lucene.NET这样的现成的标记器。让我们说文字是"这是一个问题" text_tokens
之类的数组。 text_words的内容是["此","是","问题"](规范化为小写,删除了停用词)text_tokens
中的值。这将使用索引。