在DocumentDB集合

时间:2017-09-26 12:38:34

标签: sql search azure-cosmosdb

我有一个包含100个文档的Azure DocumentDB集合。我已在每个文档中对一系列搜索词进行了标记,以便根据关键字执行搜索。

我能够使用以下SQL查询对DocumentDB搜索一个关键字:

  

SELECT VALUE c FROM root c JOIN word IN c.tags WHERE   CONTAINS(LOWER(word),LOWER('keyword'))

但是,这只允许基于单个关键字进行搜索。我希望能够搜索给定的多个关键字。为此,我尝试了以下查询:

  

SELECT * FROM c WHERE ARRAY_CONTAINS(c.tags,“Food”)或   ARRAY_CONTAINS(c.tags,“Dessert”)或ARRAY_CONTAINS(c.tags,“Spicy”)

这有效,但区分大小写。如何使这个不区分大小写?我尝试使用像这样的标量函数LOWER

  

LOWER(c.tags),LOWER(“Dessert”)

但这似乎不适用于ARRAY_CONTAINS。

我是否知道如何使用SQL查询为DocumentDB对多个关键字执行不区分大小写的搜索?

谢谢,

AB

1 个答案:

答案 0 :(得分:0)

处理区分大小写的最佳方法是将它们存储在所有小写(或大写)的tags数组中,然后在查询时执行// empty object as target here Object.assign({}, state, { // empty object as target here as well currentScanResult: Object.assign({}, state.currentScanResult, payload) })

至于您希望搜索多个用户输入标记,您构建一系列LOWER(<user-input-tag>)子句的方法可能是最好的方法。