Как понизить срок в dismax

Все:

То, что я хочу сделать, - это высоко оценивать документы, у которых есть "сезон" в поле содержимого, и сурово наказывать документы с "сезоном" в поле заголовка И поддерживать новые документы.

Интересно, как это сделать в Dismax(или eDismax)? Спасибо

3 ответа

Решение

Увеличение параметра qf будет увеличивать поле независимо от значения в поле. Чтобы повысить объем документов, содержащих ключевое слово "сезон" в поле содержимого, используйте параметр "bq". Например

select?q=*&bq=content:season^50&bq=title:season^0.001

Для ускорения вновь созданных документов используйте функцию повышения, например

recip(ms(NOW,mydatefield),3.16e-11,1,1)

где mydatefield - поле, содержащее метку времени создания или обновления документа.

Более подробную информацию об использовании функций повышения можно найти здесь

В DisMax вы можете уменьшить оценку релевантности документов со словом "сезон" в заголовке поля, используя:

    - ['bf', "if(tf(title,'season'),-5,0)"]

Пример. Если оценка релевантности документа равна 5,6 без повышения релевантности bf, а в документе есть содержание слова в поле заголовка, после применения bf оценка релевантности документа составит 5,1, поскольку Solr умножает -5 на queryNorm (что является постоянным для всех документов в результате. установить, и не влияет на его порядок), прежде чем добавить продукт в оценку релевантности. Для этого примера предположим, что queryNorm = 0.1, поэтому 5.6 - (5 * 0.1) дает 5.1.

Код выше представлен в формате yaml, который используется для настройки релевантности в VuFind.

При использовании синтаксического анализатора запросов dismax (или edismax) поля запроса указываются в параметре qf, и там также применяется усиление. Например, в вашем случае:

select?q=season&qf=content^1000 title^0.001&defType=dismax

Для повышения качества вновь созданных документов вам также необходимо указать, что происходит, когда более старый документ имеет более высокий балл, на основе критериев поиска. Если вы имеете в виду, что в случае равной оценки новый документ должен быть выше, то добавьте

sort=score desc,created_at desc

к вашему запросу, предполагая, что вы сохраняете время вставки под именем поля "creation_at".

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