Ist es möglich, boolesche Felder in Solr zu erhöhen, damit sie eine höhere Punktzahl erhalten?
Wir haben einen Index, der ungefähr so aussieht:
Bei der Suche sollten Dokumente, die überprüft wurden (z. B. is_reviewed = true), stärker gewichtet werden als solche, die dies nicht getan haben, anstatt sie vollständig auszuschließen.
Die Verwendung von is_review:true^100
scheint nicht zu funktionieren und schließt nicht überprüfte Elemente aus, anstatt ihnen nur eine geringere Gewichtung zu geben. Wenn es anders geht, kann dies erreicht werden? Danke!
Einige Abfrageparser verfügen über eine Funktion, die für diese Art der Verwendung vorgesehen ist. Zum Beispiel hat der dismax-Abfrageparser eine Ladeanfrage bq
, mit der Sie Dokumente anreichern können die einer Abfrage entsprechen, indem sie ihre Klauseln zur ursprünglichen Abfrage hinzufügen. Es gibt auch eine Boost-Funktion bf
, die es Ihnen erlaubt, Scores mit dem Ergebnis von a zu multiplizieren Funktion. Verwenden Sie beispielsweise is_review
als diesen Parameter bf
,
is_review
-Feld nicht definiert ist, wird mit 0 multipliziert. is_review
= false
mit eins multipliziert wird. is_review
= true
mit zwei multipliziert wird. is_review:true^100
sollte nicht überprüfte Elemente nicht ausschließen, es sei denn, Sie verwenden AND
als Standardabfrageoperator . In diesem Fall könnten Sie versuchen, is_review:true^100
durch (is_review:true^100 OR is_review:false^0)
zu ersetzen.
Wenn Sie an der Boost-Funktion des dismax-Abfrageparsers interessiert sind, aber am Standardabfrageparser festhalten möchten, können Sie das Abfrage-Parser booten , mit der Sie die Scores beliebiger Abfragen mit einer beliebigen Funktion multiplizieren können.
Hier ist die Lösung für diejenigen, die Drupal CMS verwenden.
Finden Sie zuerst Ihren Feldnamen im Schema-Browser unter /solr/admin/schema.jsp
Versuchen Sie dann je nach verwendetem Modul die folgenden Beispiele:
Codebeispiel:
%Vor%Codebeispiel:
%Vor%