我有一个数据结构,我在其中标记了一系列搜索词。
{
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”不是匹配的搜索字词。
答案 0 :(得分:4)
2种方法:
SQL查询
如果您使用数组中的完整代币进行搜索,可以ARRAY_CONTAINS
和OR
运算符
SELECT *
FROM c
WHERE ARRAY_CONTAINS(c, token1) OR ARRAY_CONTAINS(c, token2)
Azure Cosmos DB上的Azure搜索索引器
如果要进行丰富的全文搜索(模糊文本搜索,拼写错误等),可以在Azure Cosmos数据库容器之上添加Azure搜索索引器:https://docs.microsoft.com/en-us/azure/search/search-howto-index-documentdb