Как узнать, когда использовать Solr bq против bf и как применять логику запросов?

Я только начинаю узнавать о бустинге в Solr, и до сих пор мне удавалось добавлять буст-запросы на основе некоторых конкретных фраз, таких как: bq=manufacturer:sony^2, Тем не менее, я сейчас пытаюсь применить логику для повышения, и я не уверен, что делать дальше.

В частности, у меня уже есть запрос на повышение с несколькими терминами, такими как

bq = manufacturer:"sony"^2 name:"bob"^3 town:"place"^4 age:"40"^5

но я хотел знать, возможно ли добавить еще один термин, который представляет собой набор меньших терминов, так что, если один или несколько совпадений, тогда весь термин будет взвешен выше для данного результата поиска? Что-то вроде:

bq = manufacturer:"sony"^2 (name:"bob" OR town:"place" OR age:"40")^ 5

где многоточечный в скобках имеет один связанный вес (5), который "активируется" только в случае совпадения одного или нескольких его подслов.

Есть ли что-то подобное, просто принадлежать bq или это ближе к функции повышения? Я в некотором замешательстве относительно того, каковы основные различия.

Спасибо за любую помощь.

1 ответ

Согласно документации Solr https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser

Параметр bq (Boost Query) Параметр bq указывает дополнительное необязательное условие запроса, которое будет добавлено к основному запросу пользователя для влияния на оценку.

Параметр bf (Boost Functions) Параметр bf указывает функции (с необязательными бустами), которые будут использоваться для построения FunctionQueries, которые будут добавлены в основной запрос пользователя в качестве необязательных предложений, которые будут влиять на оценку.

Вы бы использовали параметр bf, если хотите извлечь значение из поля, используя одну из собственных функций Solr.

В вашем случае вы используете поля как есть и не используете никаких собственных функций Solr. Поэтому для вашего случая bq будет работать нормально.

Вы можете связать несколько параметров bq в своем запросе, чтобы получить желаемый результат. Например, вы можете сделать:-

q=*:*&bq=manufacturer:sony^2&bq=name:bob^3&bq=town:place^4&bq=age:40^5

Вы можете изменить вышеуказанный запрос в соответствии с вашими потребностями.

Другие вопросы по тегам