Карты синонимов в Поиске Azure, фразы синонимов

Я пытаюсь использовать карты синонимов в Поиске Azure, и у меня возникла проблема. Я хочу, чтобы несколько слов и фраз отображались в одном поисковом запросе.

Другими словами, когда я ищу:

product 123, product0123, product 0123

я хочу, чтобы поиск возвращал результаты по фразе запроса:

product123.

После прочтения руководства все казалось красивым простой.

Я использую .Net Azure.Search SDK 5.0, поэтому сделал следующее:

var synonymMap = new SynonymMap
{
     Name = "test-map",
     Format = SynonymMapFormat.Solr,
     Synonyms = "product 123, product0123, product 0123=>product123\n"
};  
_searchClient.SynonymMaps.CreateOrUpdate(synonymMap);

и я использую карту в одном из полей поиска

index.Fields.First(x => x.Name == "Title").SynonymMaps = new[] {"test-map"};

Все идет нормально. Теперь, если я выполню поиск по запросу product0123, я получу результаты по запросу product123, как и ожидал. Но если я ищу фразу продукт 123 или продукт 0123, я получаю кучу нерелевантных результатов. Это почти как если бы карты синонимов не работали с элементами, состоящими из нескольких слов.

Итак, угадайте, мой вопрос: я неправильно использую карты синонимов или эти карты работают только с синонимами из одного слова?


person Shraibikus    schedule 05.07.2018    source источник


Ответы (1)


Заключены ли фразы product 123 или product 0123 в двойные кавычки? Фразы должны быть заключены в двойные кавычки ("product 123"). Двойные кавычки - это операторы поиска по фразе, а в случае синонимов они гарантируют, что термины во фразе будут проанализированы и сопоставлены с правилами в карте синонимов как фраза. Без этого парсер запросов разделяет фразы без кавычек на отдельные термины и пытается сопоставить синонимы для отдельных терминов. В этом случае запрос становится product OR 123.

В этой документации объясняется, как анализируются запросы ( этап 1) и проанализированный (этап 2). На втором этапе производится аппликация синонимов.

Чтобы ответить на ваш второй вопрос в комментарии, к сожалению, для соответствия многословным синонимам требуются двойные кавычки. Однако как разработчик приложения вы полностью контролируете то, что передается поисковой службе. Например, получив запрос product 123 от пользователя, вы можете переписать запрос под капотом, чтобы повысить точность и вспомнить до его передачи в службу поиска. Фразовый поиск или поиск по близости можно использовать для повышения точности, а поиск с использованием подстановочных знаков (например, нечеткий поиск или поиск по префиксу) можно использовать для улучшения запоминания запроса. Вы могли бы переписать запрос product 123 на что-то вроде "product 123"~10 product 123, и синонимы будут применяться к сформулированной части запроса.

Нейт

person Nate Ko    schedule 05.07.2018
comment
Спасибо за подсказку, Нейт. Я думал, что проверял двойные кавычки раньше, и они ничего не сделали, но я просто проверил это снова, да, двойные кавычки делают свое дело. Проблема в том, что я боюсь, что с точки зрения пользователя использование кавычек не будет очевидным решением. Мы испортились умным поиском в Google. У вас есть какие-нибудь советы, как добиться желаемого результата без использования кавычек в поисковой фразе? - person Shraibikus; 06.07.2018
comment
Привет, Шрайбикус, я включил ответ на ваш вопрос в комментарии к исходному ответу. - person Nate Ko; 09.07.2018