2009-04-24 10 views
0

hier Lucene scoring Gleichung:Wie berechnet Lucene Multifield-Score?

score (q, d) = Koord (q, d) · querynorm (q) · Σ (tf (t in d) · IDF (t) 2 · t.getBoost() · Norm (t, d))

Was ist mit Mehrfeld-Scoring?

Wird der Punktestand direkt summiert oder gemittelt oder ..?

Antwort

0

Es hängt von der Operation ab. Wenn Sie ein OR wie in (Name: Rechnung ODER Geschlecht: männlich) machen, nimmt es das Maximum der beiden. Wenn Sie ein UND machen, wird es eine Summe machen.

+0

Ihre Antwort ist falsch. Shashikant Kore hat es richtig gemacht. –

3

Sie können die Details der Bewertung in Similarity Klasse lesen. In dieser Gleichung werden die Parameter in Bezug auf das Dokument referenziert, wenn sie tatsächlich Field bedeuten. Term Frequency ist also die Häufigkeit des Ausdrucks in einem gegebenen Feld im Dokument. Dies kümmert sich automatisch um die Abfragen für mehrere Felder.

KenEs Antwort oben ist falsch. (Es gibt keinen MAX-Operator in der Gleichung.) Die Punktzahl für jede Abfrage in einem Feld addiert sich zum Endergebnis. Für die Abfrage (Name: Rechnung ODER Geschlecht: männlich) ergibt sich die Summe der Punkte für (Name: Rechnung) und (Geschlecht: männlich). Typischerweise werden die Dokumente, die beide Kriterien erfüllen, höher (aufgrund der Summe) und kommen.

0

Shashikant Kore ist richtig zu sagen, dass Noten für jedes Feld summiert werden. Dies ist jedoch nur vor dem Beitrag der Faktoren queryNorm und coord der Fall, was bedeutet, dass sich die Endergebnisse wahrscheinlich nicht addieren werden.

Jede Bewertung wird von der queryNorm Faktor multipliziert, der pro Abfrage berechnet wird, und unterscheidet sich daher für jede (name:bill), (gender:male) und (name:bill OR gender:male). Noch ist die queryNorm für die kombinierte Abfrage nur die Summe der queryNorm s für die beiden Single-Term-Abfragen. Die Summe ergibt sich also nur dann, wenn Sie jede Punktzahl durch den Faktor queryNorm für diese Abfrage teilen.

Der coord Faktor kann auch einen Teil bezahlen: Der Standard-Scorer multipliziert den Score mit dem Anteil der abgefragten Suchbegriffe. Sie können sich also nur auf die Summation verlassen, nachdem Sie queryNorm berücksichtigt haben, wobei alle Begriffe übereinstimmen (oder coord deaktiviert ist).

Mit der explain-Funktionalität, die in Solr über den Parameter debugQuery=true verfügbar ist, können Sie genau sehen, wie ein Score berechnet wird.

0

Mit Lucene-Standardähnlichkeitsbewertung, habe ich eine Boolesche Abfrage verwendet und bekam die endgültige Formel wie folgt: (sorry es ist in latex)

score(q, d) = \sum_{f \in fields} \sum_{t \in query} idf(t, f) queryNorm(query) \times idf(t, f) tf(t, d, f) fieldNorm(f) 
+0

Dies basiert auf Lucene 5_3_0 – vahid