【问题标题】:Search multiple keywords in DocumentDB collection在 DocumentDB 集合中搜索多个关键字
【发布时间】:2018-03-07 16:46:35
【问题描述】:

我有一个包含 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, "甜点") 或 ARRAY_CONTAINS(c.tags, "辣味")

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

LOWER(c.tags), LOWER("甜点")

但这似乎不适用于 ARRAY_CONTAINS。

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

谢谢,

AB

【问题讨论】:

  • 关键字的数量是确定性的吗?还是可能很大?你想考虑人们写有拼写错误的关键字吗?

标签: sql search azure-cosmosdb


【解决方案1】:

处理区分大小写的最佳方法是将它们存储在所有小写(或大写)的标签数组中,然后在查询时执行LOWER(<user-input-tag>)。

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

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多