Вы можете расширить Сходство, и в Поиске, используйте
setSimilarity(Similarity)
Расширяя сходство, вы можете адаптировать механизм подсчета в Lucene к вашим потребностям.
EDIT:
Более конкретно, вы можете переопределить метод lengthNorm в Similarity (или его подклассе):
public float lengthNorm(String fieldName, int numTokens){
return fieldWeights.get(fieldName)*super.lengthNorm(fieldName, numTokens);
}
fieldWeights может быть атрибутом карты, в котором вы указываете вес, который вы хотите прикрепить к каждому полю. Если вы где-то сохраняете ссылку на fieldWeights, вы можете изменить вес поля на любой, какой вы хотите, непосредственно перед выполнением поиска (но для эксперимента делайте это только для одного запроса за раз).