Используйте функциональный запрос для повышения оценки в Solr
Я работал над Solr 4 для оптимизации моего рейтинга результатов Solr на основе рейтинга популярности, хранящегося в Index.
Теперь, когда кто-то ищет, кроме рейтинга релевантности, я хочу влиять на рейтинг релевантности, используя рейтинг популярности. Самая простая формула может быть:
новый рейтинг релевантности = оценка * популярностьранк
Я смотрю на запрос функции Solr по адресу http://wiki.apache.org/solr/FunctionQuery, чтобы добиться того же, однако я не уверен, как заставить его работать. Я не понял, как умножить счет, используя функцию продукта. Пытаясь это сделать, я всегда получаю сообщение об ошибке, поскольку поле не определено.
Теперь я могу использовать boost, как определено здесь. Как повысить поля в solr, но у меня есть дополнительная логика / требование, где я хочу использовать функциональный запрос, предоставленный Solr.
Например, я попробовал следующий простой запрос, который, кажется, работает
http://solr:8983/solr/select?q=hp%20laptop&defType=edismax&fl=Id,Name,score&bf=product%28$v1,$v2%29&v1=Id&v2=2
Теперь, для моего фактического требования, я хочу взять оценку как $v2, однако я не могу найти, как это сделать.
Любая помощь высоко ценится.
2 ответа
Вы можете попробовать использовать _val_
крючок предоставлен Solr.
Например, чтобы отсортировать по score * popularityrank
попробуйте использовать это
http://solr:8983/solr/select?q=hp%20laptop&_val_="product(score,popularityrank)"
Используйте функцию query (), чтобы получить значение 'score'.
Поэтому, если вы пытаетесь это сделать: new_score = Score * популярность, используйте следующий формат.
q = searchterm &sort = product (запрос ($q), популярность) desc
query ($ q) - возвращает оценку TF-IDF для запроса. Так что это эквивалентно использованию поля "оценка".