2017-12-30 5 views
0

Ich habe Dokumente wie folgt aus:Elasticsearch eher wie dieses gibt zu viele Dokumente

{ 
title:'...', 
body: '...' 
} 

Ich möchte Dokumente erhalten, die mit einem bestimmten Dokument die mehr als 90% ähnlich sind. Ich habe diese Abfrage verwendet:

query = { 
    "query": { 
     "more_like_this" : { 
      "fields" : ["title", "body"], 
      "like" : "body of another document", 
      "min_term_freq" : 1, 
      "max_query_terms" : 12 
     } 
    } 
} 

Wie ändert man diese Abfrage auf 90% Ähnlichkeit mit angegebenen doc zu überprüfen?

+0

Ihre Frage genau so ziemlich klingt wie ein Beispiel in der Dokumentation ..: „' Ein komplizierterer Anwendungsfall besteht Texte mit Dokumenten bereits bestehenden im Index der Vermischung. In diesem Fall ähnelt die Syntax zum Angeben eines Dokuments der in der Multi-GET-API verwendeten Syntax.' Link: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html – ryanlutgen

Antwort

0

Werfen Sie einen Blick Sie minimun_should_match angeben sollten

minimum_should_match

Nachdem die disjunctive Abfrage gebildet worden ist, steuert dieser Parameter die Anzahl der Begriffe, die übereinstimmen müssen. Die Syntax ist die gleiche wie die Minimum sollte übereinstimmen. (Standardeinstellung ist "30%").

Es bildet Abfrage mit diesem

Die MLT-Abfrage einfach extrahiert den Text aus dem Eingabedokument, analysiert, in der Regel des gleichen Analysator auf dem Feld verwendet wird, dann wählt die oben K Begriffe mit der höchste tf-idf eine disjunktive Abfrage dieser Begriffe

So bildet, wenn Sie Ihnen Titelfeld steigern mögen, sollten Sie Ihr Titelfeld steigern, denn wenn der Titel enthält die meisten die Begriffe, die in dem Begriff Häufigkeit/Inverse Dokumenthäufigkeit vorhanden sind. Das Ergebnis sollte verstärkt werden, weil es relevanter ist. Sie können Ihr Titelfeld um 1,5 erhöhen.

Siehe this Dokument für referenceren auf der more_like_this Abfrage

Verwandte Themen