具有包含和较低/较高功能的Azure Cosmos DB搜索

时间:2019-03-06 09:18:16

标签: azure azure-cosmosdb

我正在尝试查询cosmosDB,该数据库想使用SQL的“ like”功能来搜索名字,为了不区分大小写,我正在使用cosmos DB的“ lower”功能。

例如SELECT * FROM c where contains(lower(c.lastName),“ abc”))//请求费用= 1660 +

我观察到此查询的请求费用约为1660+,但当我使用不带“包含”和“较低”功能的普通查询时,请求费用仅为'8'

例如SELECT * FROM c where c.lastName =“ abc” //请求费用= 8

请帮助您了解造成请求费用巨大差异的原因是什么?

1 个答案:

答案 0 :(得分:0)

使用contains进行的第一个查询实际上是在进行自由文本搜索,并且必须扫描所有文档。

第二个查询使用的是完全匹配匹配,因此将只使用索引并且花费更少。

除了实际查询路径的开销外,第一个查询的结果集可能比第二个查询大得多,因为第二个查询始终包含在第一个查询中,但第一个查询可以匹配更多内容,例如abcd,cabcd。

如果您要搜索许多文本列,那么值得考虑以下两个选项之一。

  1. 如果您要搜索整个单词,但列也不是太 很久之后,您可以将这些列标记化为匹配的字段

  2. 更强大的选择是查看在     与Cosmos DB结合使用

advice is from the azure blog