Как в поиске Azure выполнить поиск «содержит» с несколькими терминами в тексте поиска? - PullRequest
0 голосов
/ 01 июня 2018

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

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

Отклоненоsolutions

0 соответствий, так как ищет целые слова: "azy do"

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

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

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

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

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

0 голосов
/ 18 июня 2018

Вскоре поиск Azure не предназначен для поддержки этого сценария.Возможно, вам лучше воспользоваться функцией CONTAINS в Cosmos DB или ее эквивалентом, в зависимости от того, какой язык запросов вы используете.

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

0 голосов
/ 01 июня 2018

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

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