Как я могу использовать AzureSearch с подстановочными знаками

Я хочу найти поле с именем "14009-00080300", и я хочу получить хит при поиске только по части, например, "14009-000803".

Используя этот код, я не получаю хиты:

   {
 "search": "\"14009-000803\"*",
 "count":true,
 "top":10
}

Есть ли способ использовать поиск Azure, как SQL использует поиск по шаблону? (выберите * из таблицы, где col как '%abc%'?

2 ответа

Вы можете получить желаемый результат, выполнив полный запрос с синтаксисом Lucene (как отмечено Sumanth BM). Хитрость заключается в поиске регулярных выражений. Измените параметры вашего запроса следующим образом:

{
 "queryType": "full",
 "search": "/.*searchterm.*/",
 "count":true,
 "top":10
}

Замените 'searchterm' на то, что вы ищете, и поиск Azure должен вернуть все совпадения из ваших столбцов с возможностью поиска по индексу.

Смотрите раздел Doc: MS Docs по поиску по регулярному выражению Lucene

Вы можете использовать общепризнанный синтаксис для поиска по нескольким () или одиночным (?) Символам. Обратите внимание, что анализатор запросов Lucene поддерживает использование этих символов с одним термином, а не с фразой. Например, чтобы найти документы, содержащие слова с префиксом "примечание", например "блокнот" или "блокнот", укажите "примечание ".

Примечание. Вы не можете использовать * или? символ в качестве первого символа поиска. Анализ текста по поисковым запросам с подстановочными знаками не выполняется. Во время запроса подстановочные термины запроса сравниваются с проанализированными терминами в поисковом индексе и раскрываются.

Особенности параметра SearchMode Влияние searchMode на запросы, как описано в разделе Синтаксис простого запроса в поиске Azure, в равной степени относится к синтаксису запроса Lucene. А именно, searchMode в сочетании с операторами NOT может привести к результатам запроса, которые могут показаться необычными, если вы не знаете, как установить этот параметр. Если оставить значение по умолчанию searchMode = any и использовать оператор NOT, операция вычисляется как действие ИЛИ, так что "Нью-Йорк" НЕ "Сиэтл" возвращает все города, которые не являются Сиэтлом.

https://docs.microsoft.com/en-us/rest/api/searchservice/simple-query-syntax-in-azure-search

Ссылка: https://docs.microsoft.com/en-us/rest/api/searchservice/lucene-query-syntax-in-azure-search

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