Динамическое взвешивание полей Lucene

Lucene поддерживает настройку фиксированных относительных весов полей во время создания запроса. Это означает, что для всех совпадающих документов сходство содержимого всех доступных для поиска полей с запросом взвешивается (и суммируется) на основе этих фиксированных предварительных весов. Мой вопрос заключается в том, можно ли динамически устанавливать веса полей документа во время поиска на основе атрибутов каждого документа. Например, если все проиндексированные документы имеют числовое поле, я хотел бы установить относительные веса текстовых полей каждого документа на основе его числового значения в поле.

Спасибо Дэвид


person David    schedule 27.04.2014    source источник


Ответы (1)


Да, это возможно. Для этого вы можете использовать CustomScoreQuery< /а>. Вы можете найти хороший пример в книге Lucene в действии, где CustomScoreQuery расширен для получения бустинг (форсирование документов на основе пользовательского расчета, сделанного на дату). В частности, вы хотите переопределить CustomScoreProvider, реализуя нужный вам расчет.

person AR1    schedule 19.10.2014