2008-08-02 4 views
36

In Lucene, wenn Sie mehrere Indizes hatten, die jeweils nur eine Partition abgedeckt. Warum gibt dieselbe Suche in verschiedenen Indizes Ergebnisse mit unterschiedlichen Werten zurück? Die Ergebnisse von verschiedenen Servern stimmen genau überein.Lucene Ergebnis Ergebnisse

das heißt, wenn ich gesucht:

  • Name - John Smith
  • DOB - 11/11/1934

Partition 0 zurückkehren würde eine Punktzahl von 0.345

Partition 1 würde eine Punktzahl von 0,337

zurückgeben

Beide stimmen genau auf Name und DOB überein.

Antwort

18

Die scoring enthält die Inverse Document Frequency (IDF). Wenn der Begriff "John Smith" in einer Partition 0, 100 mal und in Partition 1 einmal ist. Die Punktzahl für die Suche nach John Smith wäre eine höhere Suche in Partition 1, da der Begriff knapper ist.

Um dies zu umgehen, müssten Sie Ihren Index über alle Partitionen haben, oder Sie müssten die IDF überschreiben.

+1

Oder Sie könnten einen Multisearch aus allen Indizes erstellen. –

13

Weil das Ergebnis auf dem Index bestimmt wird, wenn ich mich nicht völlig irre.

Wenn Sie verschiedene Indizes (mehr/weniger oder andere Daten, die indiziert wurde) haben, wird die Punktzahl unterscheiden:

http://lucene.apache.org/core/3_6_0/scoring.html

(Achtung: Enthält Math :-))

+2

Aktualisierter Link: http://lucene.apache.org/java/2_4_0/scoring.html –

7

können Sie auch interessiert sein an der Ausgabe der explain() method, und die daraus resultierende Explanation object, die Ihnen eine Vorstellung davon geben wird, wie die Dinge so bewertet werden, wie sie sind.