2017-09-26 77 views
0

我有一个带有100个文档的Azure DocumentDB集合。我已经在每个文档中标记了一系列搜索条件,以根据关键字执行搜索。在DocumentDB集合中搜索多个关键字

我可以使用下面的DocumentDB SQL查询来搜索上只有一个关键词:

SELECT值C从根部为C JOIN字IN c.tags WHERE CONTAINS(LOWER(字),LOWER(”关键字'))

但是,这只允许基于单个关键字进行搜索。我希望能够搜索给定的多个关键字。对于这一点,我想下面的查询:

SELECT * FROM C,其中ARRAY_CONTAINS(c.tags, “食品”)或 ARRAY_CONTAINS(c.tags, “甜品”)或ARRAY_CONTAINS(c.tags,“香辣“)

此方法适用,但区分大小写。我如何使这种不区分大小写?我尝试使用标量函数LOWER这样

LOWER(c.tags),LOWER( “甜点”)

,但是这似乎并没有与ARRAY_CONTAINS工作。

任何想法如何使用DocumentDB的SQL查询对多个关键字执行不区分大小写的搜索?

感谢,

AB

+0

关键字的数量是确定性的吗?或者它可能很大?你想考虑人们写拼写错误的关键字吗? –

回答

0

应对区分大小写的最好方法是把它们存放到标签阵列全部小写(或大写)中,然后就做LOWER(<user-input-tag>)在查询时。

至于你希望搜索多个用户输入标签,你的方法建立一系列OR子句可能是最好的方法。