Lucene / AzureSearch ближайшие матчи - PullRequest
0 голосов
/ 19 декабря 2018

Клиент запрашивает функцию, которую я не совсем уверен в том, как ее разработать.

Задача заключается в следующем: как найти наиболее близкие совпадения к запросу и указать пропущенные в них термины.Это то, что делает Google, когда не находит ваш точный запрос.

Таким образом, на сайте есть несколько служб, в которых есть теги: - Tag1 - Tag2 - Tag3

Затем мы хотимзапустить запрос, который возвращает все сервисы со всеми тегами.Так что я могу сделать что-то вроде сгруппированного И.но, скажем, я хочу вернуть 5 ближайших сервисов тому, что ищет пользователь.Например, могут быть сервисы, которые соответствуют только Tag2 и Tag3.

Полагаю, я мог бы выполнить групповой запрос ИЛИ, но вопрос в том, как их упорядочить по найденному количеству совпадающих терминов? Можно ли как-нибудь создать собственную оценку для этого?И как мне получить те термины, которых нет в результатах?(Tag1 в примере).

спасибо.

1 Ответ

0 голосов
/ 19 декабря 2018

Когда вы выполняете простой запрос со всеми тегами, документы, соответствующие любому из тегов, будут возвращены, а те, которые соответствуют большему количеству тегов, будут отображаться выше в списке результатов поиска.

search=Tag1 Tag2 Tag3

Если вы хотите продвигать документы, которые соответствуют всем тэгам еще выше, вы можете использовать функцию повышения терминов Язык запросов Lucene

search=(Tag1 AND Tag2 AND Tag3)^3 OR Tag1 OR Tag2 OR Tag3&queryType=full

Подробнее о функции оценки по умолчанию в Поиске Azure можно узнать здесь: Как работает полнотекстовый поиск в Поиске Azure - оценка .

Чтобы увидеть, какие термины соответствуют, вы можете использовать выделение совпадений.

...