Je souhaite utiliser un seul champ pour indexer le titre et le corps du document, afin d'améliorer les performances."booster" différentes instances du même champ dans un document lucene
L'idée était de faire quelque chose comme ceci:
Field title = new Field("text", "alpha bravo charlie", Field.Store.NO, Field.Index.ANALYZED);
title.setBoost(3)
Field body = new Field("text", "delta echo foxtrot", Field.Store.NO, Field.Index.ANALYZED);
Document doc = new Document();
doc.add(title);
doc.add(body);
Et puis je pouvais faire une TermQuery
unique au lieu d'un BooleanQuery
pour deux champs distincts.
Cependant, il s'avère qu'un coup de pouce de champ est le multiple de tout le coup de pouce des champs du même nom dans le document. Dans mon cas, cela signifie que les deux champs ont un boost de 3.
Y at-il un moyen que je puisse obtenir ce que je veux sans avoir à utiliser deux champs différents? Une façon serait d'ajouter plusieurs fois le champ title
au document, ce qui augmente la fréquence du terme. Cela fonctionne, mais semble incroyablement mort cérébrale.
Je connais aussi le payloads, mais cela semble être un peu exagéré pour ce que je cherche.
Des idées?
Pouvez-vous aller dans quelques détails sur les problèmes de performance que vous essayez de surmonter? Je n'ai jamais rencontré de problèmes en utilisant BooleanQuery sur deux champs séparés. – Snekse
Je ne l'ai pas testé, mais je suis sûr que cela prend plus de temps pour rechercher '(titre: bravo OU corps: bravo)' que pour 'texte: bravo' – itsadok