Карты-синонимы в Azure Search, фразы-синонимы - PullRequest
0 голосов
/ 06 июля 2018

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

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

товар 123 , товар0123 , товар 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 , как я и ожидал. Но если я ищу фразу product 123 или product 0123 , я получаю кучу несущественных результатов. Как будто карты синонимов не работают с элементами из нескольких слов.

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

1 Ответ

0 голосов
/ 06 июля 2018

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

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

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

Нейт

...