Solr Lucene - повысить релевантность на основе рейтинга от 0 до 5 звезд?

Совершенно новый для Solr 1.4 - кажется, действительно очень мощный. Однако я застрял при попытке вернуть результаты поиска в порядке релевантности (оценка) и rating_value (оценка от 0 до 5 звезд для каждого результата).

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

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

Я попытался добавить 'rating_value: 1 ^ 0.1 rating_value: 2 ^ 0.2' и т. Д., Но это, похоже, сильно увеличивает ответы, у которых нет соответствия ключевому слову, но есть высокий рейтинг в звездах.

Любая помощь очень ценится! Спасибо, Себ


person seb835    schedule 02.02.2011    source источник


Ответы (2)


Вы на правильном пути, добавив термины «rating_value» со значениями повышения. Однако при построении запроса убедитесь, что ключевые слова являются «ОБЯЗАТЕЛЬНЫМИ» терминами, которые потребуют, чтобы документ содержал этот термин для его возврата.

Оттуда вы можете поиграть с относительными значениями повышения для каждого термина. Если повышение рейтинга слишком велико, вы можете повысить рейтинг ключевых слов, и наоборот. Важно знать, что абсолютные значения повышения несопоставимы по полям, т.е. присвоение ключевым словам повышения 20 и рейтинга_значения 19 не означает, что ключевые слова будут повышены больше, в основном из-за нормализации длины. См. Сходство Люсена для получения дополнительной информации.

person bajafresh4life    schedule 02.02.2011
comment
Ах да, понятно. Моя проблема в том, что возвращаются результаты без соответствия ключевых слов запроса; они отображаются просто потому, что у них есть рейтинг. Как мне управлять вашим предложением выше ОБЯЗАТЕЛЬНЫХ условий с моим запросом? q = foo значение_рейтинга: 1 ^ 0,1 значение_рейтинга: 2 ^ 0,2 - person seb835; 02.02.2011
comment
@ seb835: плюс означает, что это необходимо. Так что ваш был бы q=+foo rating_value:1^.01 rating_value:2^.02 - person Xodarap; 03.02.2011
comment
Да, вот и ответ. Теперь мой запрос выглядит следующим образом: q = + (foo bar nar) rating_value: 1 ^ 0.1 ... Проблема решена! Всем большое спасибо. - person seb835; 03.02.2011

Если вы используете обработчик запросов DISMAX, вам также следует рассмотреть возможность повышения с помощью поля bq (запрос повышения), поскольку это повышение влияет только на документы, которые уже совпадают с запросом пользователя.

Вы должны заранее определить поле bq в solrconfig.xml внутри обработчика запросов, например.

<str name="bq">
  rating_value:1^0.1 rating_value:2^0.2
</str>
person Baxny    schedule 17.06.2011