Используйте функциональный запрос для повышения оценки в 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 для запроса. Так что это эквивалентно использованию поля "оценка".

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