使用Azure搜索字段

时间:2016-03-10 17:27:47

标签: azure azure-cosmosdb azure-search

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

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

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

1 个答案:

答案 0 :(得分:0)

如果您想使用DocumentDB进行CONTAINS字搜索并避免扫描(而不使用Azure搜索),您可以执行以下操作:

  1. 您将text标记为一个单词数组。您可以使用像Lucene.NET这样的现成的标记器。让我们说文字是"这是一个问题"
  2. 将字词存储为text_tokens之类的数组。 text_words的内容是["此","是","问题"](规范化为小写,删除了停用词)
  3. 使用ARRAY_CONTAINS(c.text_tokens," word")查询text_tokens中的值。这将使用索引。