Как в Поиске Azure выполнить поиск "содержит" с несколькими терминами в тексте поиска?

Я использую поиск Azure в режиме полного запроса поверх CosmosDB и хочу выполнить запрос для любых документов с полем, содержащим строку «azy do». Это должно соответствовать, например, документу, содержащему слово «ленивая собака».

Читая документацию по поиску Azure, кажется, что это невозможно из-за используемых в ней индексов на основе терминов.

Отклоненные решения

0 совпадений, так как он ищет слова целиком: "azy do"

Не работает, поскольку регулярные выражения не могут охватывать несколько терминов: /. азы делать. /

Это «работает» в той степени, в которой будет соответствовать «ленивая собака», но это не соблюдает порядок запроса и также будет соответствовать «ленивой собаке», например /.ази./ AND /.делать./

Есть ли способ сделать это правильно в Поиске Azure?

Может ли кто-нибудь помочь мне создать собственный анализатор для вышеупомянутого варианта использования?

Akash Yadav 03.06.2018 22:22

Пожалуйста, в будущем помечайте вопросы о поиске Azure меткой [azure-search]. В противном случае группа поиска Azure не получит уведомление о вашем вопросе.

Bruce Johnston 15.06.2018 20:34
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
2
153
3

Ответы 3

Если вы не можете добиться этого с помощью регулярного выражения в синтаксисе Lucene Query, то это невозможно. Вы можете проголосовать за поддержку, содержащую здесь.

Это должно быть /.ленивый | собака./ Итак, разделите термины на основе пробелов и добавьте разделитель вертикальной черты (|), который означает OR.

Вкратце, поиск Azure не предназначен для поддержки этого сценария. Возможно, вам будет лучше использовать функцию СОДЕРЖИТ в Cosmos DB или ее аналог, в зависимости от того, какой язык запросов вы используете.

Поиск Azure предназначен для поиска терминов или фраз, встречающихся в неструктурированном содержимом (документах), и возврата наиболее подходящих документов. Процесс извлечения и индексации этих доступных для поиска терминов настраивается и описывается здесь: Как работает полнотекстовый поиск в Поиске Azure.

Другие вопросы по теме