首页 文章

使用Azure搜索字段进行DocumentDB查询

提问于
浏览
2

我想执行一个看起来像SELECT * FROM c的DocumentDB查询,其中c.teams IN(@teamsList)和CONTAINS(c.text,“some string”)

问题是上面的查询是计算密集型的并且几乎超过了我们的S3集合限制(这个查询花费了2400RU并且我们的数据集快速增长,我们将很快达到包含的扫描限制) .

我知道Azure搜索是一种更有效的方式或搜索可索引字段 . 我的问题是如何有效地将Azure搜索的结果与其他查询字段合并,在我的示例中,按团队列表限制它 . 我们感兴趣的是公开"query builder"(类似示例可用here),其中CONTAINS是任何字段上的允许操作数 .

1 回答

  • 0

    如果要使用DocumentDB进行CONTAINS单词搜索并避免扫描(并且不使用Azure搜索),则可以执行以下操作:

    • 您将 text 标记为一个单词数组 . 您可以使用像Lucene.NET这样的现成的标记器 . 我们说文字是"This is a question"

    • 将单词存储为数组,如 text_tokens . text_words的内容为["this","is","question"](规范化为小写,删除了停用词)

    • 使用ARRAY_CONTAINS(c.text_tokens,"word")查询 text_tokens 中的值 . 这将使用索引 .

相关问题