Как помочь моему движку Solr понять связанные термины? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть большой список связанных терминов (не синонимов), которые я бы хотел, чтобы мой механизм solr учитывал при поиске. Например:

База данных -> PostgreSQL, Oracle, Derby, MySQL, MS SQL, RabbitMQ, MongoDB

Для этого вида списка я хотел бы Решите принять во внимание, что если пользователь ищет «postgresql конфигурацию», он может также принести результаты, связанные с «RabbitMQ» или «Oracle», но не как абсолютные синонимы. Просто чтобы повысить результаты, которые имеют эти ключевые слова / термины. Каков наилучший подход для реализации такого соединения? Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2020

Вы уже обнаружили, что это синонимы - и что вы хотите использовать эту метаинформацию в качестве повышения (что является хорошей идеей).

Ключом является определение поля, которое выполняет то, что вы хотите - в дополнение к вашему обычному полю. В большинстве этих случаев реализовано наличие второго поля, которое делает «менее точную» версию поля и применяет более низкое усиление для совпадений в этом поле по сравнению с точной версией.

Вы определяете оба поля - один с синонимами (например, content_synonyms) и один без (content), а затем добавьте инструкцию copyField из поля content (это означает, что Solr примет все, что отправлено в поле content и " скопируйте его как исходный текст для поля content_synonyms.

Используя edismax, вы можете затем использовать qf для запроса обоих полей и придания большего веса точному полю содержимого: qf=content^10 content_synonyms получит хиты на content 10x больше, чем хиты на content_synonyms, фактически используя поле синонима для увеличения контента.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...