在documentDb

时间:2017-08-01 22:53:56

标签: sql substring contains azure-cosmosdb

我有一个数据结构,我在其中标记了一系列搜索词。

{
   id: "some_id",
   name: "Bob's diner and eatery",
   searchTerms: ["bob", "bobs", "diner", "eatery"]
}

我可以使用以下查询搜索一个术语

SELECT VALUE 
    restaurant
FROM root 
    restaurant
JOIN 
    word 
IN 
    restaurant.searchTerms
WHERE 
    CONTAINS(word, @SearchTerm)

如何搜索我想要查找多个搜索字词的位置?如果搜索字词包含所有搜索字词或搜索字词的某些部分,则只有多个搜索字词时,该文档才会匹配。以下匹配例如:

["bo", "eat"]
["bobs", "diner"]

但以下不会:

["bobs", "restaurant"]

由于“restaurant”不是匹配的搜索字词。

1 个答案:

答案 0 :(得分:4)

2种方法:

SQL查询

如果您使用数组中的完整代币进行搜索,可以ARRAY_CONTAINSOR运算符

SELECT *
FROM c
WHERE ARRAY_CONTAINS(c, token1) OR ARRAY_CONTAINS(c, token2)

这是example query

Azure Cosmos DB上的Azure搜索索引器

如果要进行丰富的全文搜索(模糊文本搜索,拼写错误等),可以在Azure Cosmos数据库容器之上添加Azure搜索索引器:https://docs.microsoft.com/en-us/azure/search/search-howto-index-documentdb