Я использую поиск Azure в режиме полного запроса поверх CosmosDB и хочу выполнить запрос для любых документов с полем, содержащим строку «azy do». Это должно соответствовать, например, документу, содержащему слово «ленивая собака».
Читая документацию по поиску Azure, кажется, что это невозможно из-за используемых в ней индексов на основе терминов.
Отклоненные решения
0 совпадений, так как он ищет слова целиком: "azy do"
Не работает, поскольку регулярные выражения не могут охватывать несколько терминов: /. азы делать. /
Это «работает» в той степени, в которой будет соответствовать «ленивая собака», но это не соблюдает порядок запроса и также будет соответствовать «ленивой собаке», например /.ази./ AND /.делать./
Есть ли способ сделать это правильно в Поиске Azure?
Пожалуйста, в будущем помечайте вопросы о поиске Azure меткой [azure-search]. В противном случае группа поиска Azure не получит уведомление о вашем вопросе.


Если вы не можете добиться этого с помощью регулярного выражения в синтаксисе Lucene Query, то это невозможно. Вы можете проголосовать за поддержку, содержащую здесь.
Это должно быть /.ленивый | собака./ Итак, разделите термины на основе пробелов и добавьте разделитель вертикальной черты (|), который означает OR.
Вкратце, поиск Azure не предназначен для поддержки этого сценария. Возможно, вам будет лучше использовать функцию СОДЕРЖИТ в Cosmos DB или ее аналог, в зависимости от того, какой язык запросов вы используете.
Поиск Azure предназначен для поиска терминов или фраз, встречающихся в неструктурированном содержимом (документах), и возврата наиболее подходящих документов. Процесс извлечения и индексации этих доступных для поиска терминов настраивается и описывается здесь: Как работает полнотекстовый поиск в Поиске Azure.
Может ли кто-нибудь помочь мне создать собственный анализатор для вышеупомянутого варианта использования?