Boolesche Felder in Solr erhöhen

8

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:

  • Dokument-ID
  • Titel
  • Beschreibung
  • Schlüsselwörter
  • is_reviewed

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!

    
Mun 11.04.2012, 20:07
quelle

2 Antworten

9

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 ,

  • Der Wert jedes Dokuments, dessen is_review -Feld nicht definiert ist, wird mit 0 multipliziert.
  • die Bewertung jedes Dokuments, sodass is_review = false mit eins multipliziert wird.
  • der Wert jedes Dokuments, so dass 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.

    
jpountz 11.04.2012, 21:30
quelle
4

Drupal

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:

Apachesolr-Modul

Codebeispiel:

%Vor%

Solr-API-Modul suchen

Codebeispiel:

%Vor%     
kenorb 14.01.2013 17:16
quelle

Tags und Links