In ElasticSearch werden Dubletten bestraft, aber nicht eliminiert

8

Ich habe einige Daten mit doppelten Feldern. Ich möchte nicht, dass Duplikate zusammen mit Suchergebnissen angezeigt werden, aber ich möchte sie nicht vollständig eliminieren. Ich möchte nur eine bessere Sorte bekommen, also würde das 2., 3. ... n. Vorkommen desselben Feldwertes degradiert werden. Ist das mit ElasticSearch möglich?

Zum Beispiel:

%Vor%

(basierend auf dies )

Wenn wir annehmen, dass die Suche nach Wichtigkeit zunimmt, wäre das natürliche Ergebnis für die "Apple" -Suche John , John , Sam . Was ich suche, ist eine Möglichkeit, das Ergebnis John , Sam , John zu machen, dh den zweiten John zu bestrafen, weil ein anderer John bereits erschienen ist.

    
mahemoff 16.02.2017, 16:02
quelle

1 Antwort

3

Sie können das Wichtigkeitsfeld zur Indexzeit anpassen, indem Sie alle Duplikate finden und eines der Duplikate als "wichtiger" auswählen - vielleicht wird das Duplikat mit der höchsten Punktzahl gewählt. In Ihrem Beispiel würde ich dem vorhandenen Wichtigkeitswert 5000 hinzufügen.

Die Ergebnisse würden nun wie folgt eingestuft:

John / Apple-7000, Sam / Apple-5000, John / Apple-1000

Aber das bedeutet, dass Sie neu indizieren müssen, wenn Sie sich dazu entschlossen haben, die 5000 zu 10000 zu ändern, um die Bewertung anzupassen, da es von der Wichtigkeit der Wichtigkeit abhängt.

Alternativ können Sie ein weiteres Feld mit dem Namen 'Autorität' hinzufügen, für das Sie den Wert 1 für das Duplikat mit der höchsten Wichtigkeit angeben und eine Scoring-Funktion verwenden können, um einen Schritt zur Abfragezeit bereitzustellen: -

%Vor%

Beachten Sie, dass der Multiplikator für _score vom ursprünglichen Ranking-Algorithmus abhängt. Dies setzt einen Wert für _score von 0.0 bis 1.0

voraus     
abdollar 03.03.2017, 22:40
quelle

Tags und Links