2016-05-10 11 views
1
{ 
    "title" : "That Uselessly Amazing Title", 
    "author" : "Someone you have never heard of", 
    "url" : "http://www.theuselessweb.com", 
    "summary" : "a collection of useless websites", 
    "tag" : ["useless","maybe useful"] 
} 

Angenommen, ich habe ein Schema, das wie das oben gezeigte aussieht. Der Benutzer fordert die Anwendung auf, etwas "nutzlos" anzuzeigen.ElasticSearch durch mehrere Felder als Fuzzy-Abfrage

Wie schreibe ich eine Abfrage, die den Titel, die Zusammenfassung und die Tags für das Wort "nutzlos" als Fuzzy-Suche durchsucht?

Antwort

1

Aus der Dokumentation arbeitet Fuzzy match Query

GET /my_index/my_type/_search 
{ 
    "query": { 
    "multi_match": { 
     "fields": [ "summary", "title", "tag" ], 
     "query":  "useless", 
     "fuzziness": "AUTO" 
    } 
    } 
} 

Diese Abfrage, weil es eine multi_match Abfrage

Fuzziness funktioniert nur mit den grundlegenden match und multi_match Abfragen ist verwenden. Es funktioniert nicht mit Phrasenabgleich, allgemeine Begriffe oder cross_fields Übereinstimmungen.

Ansonsten musst du combine mehrere fuzzy Abfragen innerhalb einer bool Abfrage

+0

ok, habe es zu arbeiten. Wenn ich "benutze" anstelle von "nutzlos" versuche, bekomme ich keine Ergebnisse. Warum ist das? Gibt es eine Möglichkeit, das auch zuzulassen? Teilstrings? –

+0

Das hängt von den Analysatoren, Token-Filtern usw. ab, die Sie verwenden, um die Entitäten zu indizieren und dann die Art, wie Sie sie suchen. Angenommen, Sie verwenden den Standardanalysator (Englisch), wird Ihr Titel zuerst in Token "That", "Uselessly", "Amazing" und "Title" tokenisiert, dann wird jeder Token unabhängig analysiert. Für den Token "Uselessous" finde ich, dass der englische Standardanalysator "nutzlos" (Kleinbuchstaben) speichert. Wenn Sie also "verwenden" suchen, finden Sie keine Ergebnisse. Versuchen Sie, mit anderen Analysatoren zu spielen, vielleicht möchten Sie Ihre eigenen Token-Filter hinzufügen. Ich persönlich bevorzuge die von ElasticSearch.GL angegebenen! –

+0

Ich denke, Sie werden den Edge-NGram-Tokenizer, gemischt mit dem Standard-Tokenizer, lieben. Denken Sie daran, dass die Reihenfolge der Token-Filter von Bedeutung ist –

Verwandte Themen