У нас есть лазурное веб-приложение, в котором есть одно поле поиска, когда мы вводим текст в двойных кавычках, например «Служба приложений», он перечисляет записи с помощью «Служба приложений», однако он также включает записи со специальными символами между словами, например «Приложение / Услуга". Мы хотим, чтобы поисковая система возвращала записи, которые точно соответствуют поисковой фразе (не включайте записи, содержащие специальные символы между условиями поиска).
Поиск Azure, точное фразовое соответствие
Ответы (2)
В вашем случае standard
анализатор разбивает термин приложение / услуга на два отдельных термина: приложение и услуга во время индексации. Вот почему фраза «Служба приложений» соответствует документу с приложением / службой - обе версии выглядят для поисковой системы одинаково.
Если термин приложение / служба составляет все содержимое поля, вы можете проиндексировать содержимое этого поля как один токен с помощью анализатора keyword
. Дополнительные сведения см. Здесь: Пользовательские анализаторы в Azure Искать.
Анализатор keyword
не подойдет, если термин приложение / служба встречается как часть предложения. В этом случае вы можете заменить символ /
другим символом, который не разделяется токенизатором standard
, например: _
. Для этого используйте фильтр символов mappping
:
charFilters: [
{
"name":"map_char_mapping",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":[ "/=>_" ]
}
]
Следующий пост поможет вам понять, как лексические анализаторы применяются во время поиска и индексации: Как на практике использовать анализатор ключевых слов в лазурном поиске?
В этом сценарии вы хотите проиндексировать все содержимое поля как один токен. Взгляните на Пользовательские анализаторы в Azure Поиск и, в частности, keyword
анализатор.