Azure Cosmos DB Search с функцией «Содержит» и «нижний / верхний» - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь запросить cosmosDB, где бы я хотел найти имя с помощью функции SQL «like», также для учета нечувствительности к регистру. Я использую функцию «lower» базы данных Cosmos.

например, SELECT *FROM c где содержит (lower (c.lastName), "abc")) // Request Charge = 1660 +

Я заметил, что Request Charge для этого запроса составляет около 1660+, но когда я использую обычный запрос без 'ContainsФункция 'and' lower 'Запросный сбор просто' 8 '

например, SELECT * FROM c, где c.lastName = "abc" // Запросный сбор = 8

Пожалуйста, помогите понять, чтовызывает огромную разницу в запросе заряда?

1 Ответ

0 голосов
/ 06 марта 2019

Первый запрос с contains эффективно выполняет поиск freetext и должен сканировать все документы.

Второй запрос использует совпадение точное и, следовательно, будет просто использовать индекс и стоить меньше.

И, кроме стоимости фактического пути запроса, результирующий набор первого запроса может быть намного больше второго, так как второй всегда содержится в первомно первый может соответствовать гораздо большему, например, abcd, cabcd.

Если вы ищете для поиска по большому количеству текстовых столбцов, то стоит рассмотреть один из двух вариантов.

  1. Если вы ищете целые слова и столбцы не слишком длинные, то вы можете разбить столбцы на соответствующие поля

  2. Более надежный вариант - использоватьПоиск Azure в сочетании с Cosmos DB

Этот совет взят из блога Azure

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...