Как понизить срок в 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".