2017-03-09 2 views
0

Ich benutze Licene.net.Lucene Boost-Ergebnis auf anderen Feld

Ich habe docs in Index mit 2 Feldern: Text und Tag.

Ich brauche Abfrage, die für einen Wert in Text Feld und nach dem Schub Ergebnis von Tag Feld suchen.

Mit anderen Worten, ich wähle docs mit Textfeld und sortieren sie nach Tag-Feld (wenn irgendwelche Übereinstimmungen in Tag-Feld, heben Sie dieses Dokument in Suchergebnis).

Wie kann ich diese Abfrage erstellen?

+0

Meinst du, du willst eine höhere Punktzahl für Dokumente, die spezielle Tags enthalten, über die, die das nicht haben? –

Antwort

0

Wenn Sie eine höhere Punktzahl für Dokumente wünschen, die ein Tag über denen haben, die dies nicht tun, können Sie dies als optionale SHOULD-Klausel in Ihre Abfrage einfügen.

BooleanQuery bq = new BooleanQuery(); 
bq.add(/* your text query */, Occur.MUST); 
bq.add(new TermQuery(new Term("Key", key)), Occur.SHOULD); 

Ergebnisse, die SHOULD-Klauseln erfüllen, haben eine höhere Punktzahl.

Sie können auch setBoost() auf die zweite Abfrage, um es beeinflussen die Punktzahl mehr als die erste.

Verwandte Themen