2009-07-17 7 views
3

Angenommen, ich habe mehrere Lucene-Indizes (nicht Replikate) auf mehreren PCs.Lucene multiple indexes: Normalisieren von Dokumentenwerten?

Ich Abfrage jeden Index und dann die Ergebnisse zusammenführen. Gibt es eine Möglichkeit, die Scores von Dokumenten zu normalisieren, so dass ich nach Score (Relevanz) sortieren kann?

Ich meine, die Noten für Dokument A aus Index A wären nicht vergleichbar mit Dokument B aus Index B, es sei denn, ich mache irgendeine Art von Normalisierung .... nicht so?

Dank Roey

Antwort

4

Zunächst untersuchen die Lucene Similarity Documentation. Von allen Faktoren ist die einzige, die sich von einem Index zum anderen unterscheidet, die inverse document frequency (idf).

Ich schlage vor, Sie verwenden Luke oder einen Debugger, um die Auswirkungen der IDFs der verschiedenen Indizes zu sehen. Sie können feststellen, dass dies nur einen geringen Einfluss hat.

Hier ist a discussion about using a global idf, und hier - ein Wiki page about distributed search design in Solr. Ich glaube, das Problem ist noch nicht gelöst.

Die Lucene-Scoring eignet sich nicht zur einfachen Normalisierung. Ich schlage vor, Sie versuchen, die Verteilung des Dokuments so zufällig wie möglich zu machen, und vergleichen Sie dann, wie Ihre Treffer von den beiden Indizes eingestuft werden.

+1

+1, um die Dokumente nach dem Zufallsprinzip zu verteilen. Sie müssen sicherstellen, dass dies tatsächlich ein Problem ist. In den meisten Fällen werden die verschiedenen DF-Werte zwischen den Indizes Sie nicht wirklich verletzen. – bajafresh4life

+0

Ich weiß, dies ist eine alte Antwort, aber nur Sie einige Links wissen, sind gebrochen –

+0

@AndyMcCluggage - Ich habe die defekten Links auf die aktuelle Version von Lucene aktualisiert. Das sollte Ihnen ein Jahr oder so geben, bis die Version von Lucene die aktuelle ersetzt. –

-1

für den Vergleich der Punktzahl von Dokument A für Indizes X und Y. Ich berechne x = score(A,X)/max score of any document that is a hit for search on index X und y = score(A,Y)/max score of any document that is a hit for search on index Y.

Beide x und y sind jetzt zwischen 0 und 1. Fügen Sie einfach x und y hinzu, um das Endergebnis zu erhalten.

Dies ist ein naives Vorgehen. Ich würde gerne Ihre Kommentare dazu hören.

aber ich verstehe nicht, warum Sie zwei verschiedene Dokumente hinzufügen möchten. Anwendungsfall?

+0

Ich glaube, du hast die Frage missverstanden. Die Frage war, wie die Werte in den Ergebnismengen normalisiert werden, was nützlich wäre, um eine Suche über mehrere Indizes hinweg durchzuführen und die relevantesten Ergebnisse anzuzeigen. Die Sorge ist, dass der Inhalt jedes Index die Bewertung der Ergebnisse beeinflusst. Wenn der Index X eine niedrige Häufigkeit des Keywords "Motorrad" aufweist, kann er ein Dokument mit diesem Keyword hoch bewerten. Beim Zusammenführen einer identischen Suche mit dem Index Y, bei dem das Keyword häufig verwendet wird, werden die Dokumente aus X möglicherweise höher bewertet als potenziell relevantere Dokumente aus Y. –