2017-02-21 7 views
1

У нас есть лазурное веб-приложение, в котором есть одно окно поиска, когда мы вводим текст с двойными кавычками, такими как «Служба приложений», он записывает записи с помощью «Службы приложений», однако он также включает записи, имеющие специальные символы между словами типа «App/Service». Мы хотим, чтобы поисковая система возвращала записи, которые точно соответствуют поисковой фразе (не включайте записи, содержащие специальные символы между условиями поиска).Azure Search, точное совпадение фразы

ответ

1

В этом случае вы хотите проиндексировать все содержимое поля в виде одного токена. Взгляните на Custom Analyzers in Azure Search и анализатор keyword, в частности.

+0

Привет @Eugene, спасибо за ответ, не существует способ игнорировать записи, содержащие специальные символы между ними, пользовательский анализатор не представляется возможным. – harshu288

1

В вашем случае standard анализатор разбивает термин App/Услуги на два отдельных слагаемых приложение и услуг во время индексации. Вот почему фраза «Служба приложений» соответствует документу с App/Service - обе версии выглядят одинаково с поисковой системой.

Если термин App/Service составляет полноту содержания поля, вы можете индексировать содержимое этого поля в качестве одного маркера с помощью keyword анализатора. Подробнее читайте здесь: Custom Analyzers in Azure Search.

Анализатор keyword не будет хорошим вариантом, если термин App/Service встречается как часть предложения. В этом случае вы можете заменить символ / другим символом, который не делится на токенизатор standard, например: _. Используйте маркер фильтр в mappping символов для этого:

charFilters: [ 
    { 
    "name":"map_char_mapping", 
    "@odata.type":"#Microsoft.Azure.Search.MappingCharFilter", 
    "mappings":[ "/=>_" ] 
    }  
] 

Следующая запись поможет вам понять, как лексический анализаторы применяются при поиске и индексации времени: How to practially use a keywordanalyzer in azure-search?

Смежные вопросы