Повышение терминов Lucene при построении индекса

Можно ли определить, что конкретные термины важнее других при создании индекса (а не при его запросе)?

Рассмотрим, например, фильтр синонимов:
документ 1: «это хорошая машина»
документ 2: «это хорошая машина»

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

Сможет ли вызов setBoost для полей перед добавлением их в соответствующие документы поможет?

Или, может быть, мне стоит добавить синонимы к другому имени поля?

Или я смотрю на это с неправильной точки зрения?

Спасибо


person epeleg    schedule 16.01.2012    source источник
comment
Довольно старый вопрос, но я в той же лодке, вы помните или вы наконец решили проблему? Ответ кажется верным, но я не могу найти подходящего примера. Заранее спасибо!   -  person Lóri Nóda    schedule 19.04.2020


Ответы (1)


Установка ускорения в поле влияет на все термины в этом поле, поэтому в вашем случае это не сработает.

Но это должно быть возможно с использованием полезной нагрузки Lucene (байтовый массив, который может быть установлен для каждого термина). Вы могли бы использовать их, чтобы установить специальные бонусы для терминов (например, автомобиль до 0,5 для документа 1). Затем вы реализуете свой собственный Similarity и переопределите scorePayload() метод, чтобы декодировать это повышение, а затем использовать PayloadTermQuery, который позволяет вам вносить свой вклад в оценку на основе загрузки, которая у вас есть в полезной нагрузке для этого термина.

person milan    schedule 16.01.2012
comment
Спасибо, я постараюсь найти пример, основанный на тех классах и методах, которые вы здесь отметили. - person epeleg; 17.01.2012
comment
Можно ли также ограничить эти повышения полезной нагрузки только терминами в определенном поле (например, тегами)? - person RalfB; 27.10.2014