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.
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
vorausTags und Links elasticsearch order duplicates