Ist es möglich, SOLR MoreLikeThis verwenden verschiedene Felder für Modell und Spiele zu haben?

StackOverflow https://stackoverflow.com/questions/3994423

  •  10-10-2019
  •  | 
  •  

Frage

Lassen Sie uns sagen, ich habe Dokumente mit zwei Feldern A und B.

würde Ich mag SOLR die MoreLikeThis verwenden, aber mit einem Twist: Ich bin am meisten interessiert Dokumente steigern, die Ein Feld wie ist mein Modell Dokuments B-Feld. (Das heißt, Extrakt MLT die ‚interessante Begriffe‘ aus dem Modell B-Feld, sondern nur collect MLT Ergebnisse basierend auf dem A-Feld).

Ich sehe keinen Weg, um die mlt.fl Felder oder mlt.qf steigert zu verwenden, um diesen Effekt in einer einzigen Abfrage zu erreichen. (Es scheint, mlt.fl gibt an Felder für beide Entdeckung von ‚interessanten Begriffe‘ verwendet und Anpassung an diese Bedingungen.) Bin ich eine Option fehlt?

oder muss ich die ‚interessante Begriffe‘ mich zu extrahieren und tauschen Sie die ‚Feld: Begriff‘? Details

(Andere Ideen in der gleichen Ader geschätzt als auch.)

War es hilfreich?

Lösung 2

Ich denke, jetzt gibt es zwei Möglichkeiten, um die gewünschte Wirkung (ohne Anpassung des MLT-Quellcode) zu erreichen.

Erste Option: Führen Sie eine anfängliche MLT-Abfrage mit der MLT-Handler , das Hinzufügen des Parameters &mlt.interestingTerms=details. Dazu gehört auch die Liste von Begriffen, die interessant erachtet wurden, rangiert mit ihrer relativen steigert. Die üblichen Verhalten verwendet diese entdeckt Begriffe gegen die gleichen mlt.fl Felder ähnliche Dokumente zu finden. Zum Beispiel wird die Reaktion umfasst so etwas wie:

"interestingTerms": 
    ["field_b:foo",5.0,"field_b:bar",2.9085307,"field_b:baz",1.67070794]

(Da das einzige, was über diese erste Abfrage das ist interessant die interestingTerms ist, in einem fq werfen, dass die Regeln aus allen docs könnte es unnötig Scoring Arbeit überspringen helfen.)

Explizit neu zu komponieren, dass interestingTerms Informationen in eine neue oder Abfrage field_a:foo^5.0 field_a:bar^2.9085307 field_a:baz^1.67070794 Mengen des B-Feld Beispieltext zur Verwendung von Dokumenten zu finden, die in Feld A ähnlich sind, und kann genau die Art von Abfrage Standard MLT hat auf seinem üblichen Modell wird imitiert Feld.

Zweite Option: Besorgen Sie sich die Modelldokument tatsächlichen Feld B Text, und führen Sie es direkt als Content Körper , um anstelle einer Abfrage verwendet werden, für das Modell Dokument angeben. Dann zielt mlt.fl auf Feld A aus Gründen ähnliche Ergebnisse zu sammeln. Zum Beispiel könnte ein Fragment der Parameter …&stream.body=foo bar baz&mlt.fl=field_a&… werden. der Nettoeffekt dieses Modell Text ursprünglich von Field_B Sein ist das Auffinden von Dokumenten ähnlich nur in Field_A wieder.

Andere Tipps

Zwei Optionen ich sehe, sind:

  1. Verwenden Sie einen copyField -. Index Sie das Originaldokument mit einer Kopie von Feld A genannt B, und dann Abfrage B mit
  2. MoreLikeThisHandler erweitern und ändern Sie die Felder, die Sie Abfrage.

Die erste Option kostet ein wenig Programmierung (meist Konfigurationsänderungen) und einigen Speicherverbrauch. Die zweite beinhaltet mehr Programmierung, aber keinen Speicherbedarf zu erhöhen. Hoffnung einer von ihnen Ihren Bedürfnissen entspricht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top