Diese Funktionalität ist aufgrund eines Konzepts namens Fuzzy Logic, Unschärfe oder Fuzzy -Suche möglich.
Was ist Unschärfe??
Fuzziness oder Fuzzy Logic bezieht sich auf eine mathematische Logik, die beschreibt, dass die Wahrheit eines Wertes ein Zahlenbereich zwischen 0 und 1 sein kann.
Im Gegensatz zur Booleschen Logik mit zwei unterschiedlichen Werten: 0 und 1 akzeptiert Fuzzy Logic einen variablen Bereich von Wahrheit und Falsy.
In einfachen Worten beschreibt Unschärfe, wie klar ein Wert sein kann. Nehmen Sie zum Beispiel einen Tippfehler. Woher weißt du, dass es ein Tippfehler ist? Sie bewerten die vorhandenen Buchstaben und bestimmen, was das Wort beschreiben wollte.
In Fuzzy Logic können wir dies im Bereich von 0 und 1 ausdrücken. Wenn ein Tippfehler Helli ist, beschreibt es eher Hallo oder Hölle als „menschlich“ oder „Tomate“.”
Fuzzy -Suche in Elasticsearch
Eine Fuzzy -Suche findet die Übereinstimmungswerte basierend auf der Erstabfrage basierend auf den spezifischen Kriterien.
Elasticsearch implementiert Unschärfe unter Verwendung des Levenshtein -Bearbeitungsdistanzalgorithmus.
Die Bearbeitungsentfernung ist die Gesamtzahl der Wortvariationen wie Änderungen, Löschungen, Ersetzungen oder Umschüsse des Anfangsworts, um ein Zielwort zu erreichen.
Wie Elasticsearch Fuzzy -Suche funktioniert
Der Algorithmus ist einfach zu verstehen. Sie beginnen mit zwei Wörtern und vergleichen sie nacheinander Zeichen für Zeichen.
Wenn der Charakter unterschiedlich ist, erhöhen Sie den Abstand zwischen den Wörtern um eins. Sie bestimmen dann den endgültigen Entfernungswert zwischen den Buchstaben.
NOTIZ: Das obige beschreibt die mathematische Implementierung des Algorithmus nicht. Betrachten Sie den Link
Elasticsearch Fuzzy Query
Eine Fuzzy -Abfrage unterscheidet sich nicht sehr von einer regulären Elasticsearch -Abfrage. Um es zu verwenden, fügen Sie den Parameter der Unschärfe der Suchabfrage hinzu.
Sie können auch die maximale Levenshtein -Distanz hinzufügen, die Sie in Ihrer Abfrage verwenden können.
Holen Sie sich Kibana_Sampel_Data_ecommerce/_SEARCHWir führen eine Fuzzy -Abfrage aus, um den Begriffen „Männer“ zu entsprechen, und setzen im obigen Beispiel einen benutzerdefinierten Unschärfewert.
Unten finden Sie eine Beispielantwort:
Wenn Sie die Bearbeitungsentfernung senken, begrenzt Elasticsearch den Suchabstand, was dazu führt, dass einige Werte fehlen.
Zum Beispiel die folgende Abfrage mit einer Bearbeitungsentfernung von 0.2 gibt keine Ergebnisse zurück.
Holen Sie sich Kibana_Sampel_Data_ecommerce/_SEARCHDie Antwort ist wie unten gezeigt:
Elasticsearch Unschärfeparameter
Wie bereits erwähnt, legt der Fuzziness -Parameter in der Abfrage die maximale Levenshtein -Bearbeitungsentfernung oder die Anzahl der Änderungen fest.
Wir können die Unschärfewerte als: 0, 1, 2 oder Auto angeben.
Wenn Sie die Bearbeitungsentfernung für Ihre Fuzzy -Abfragen manuell festlegen, verpassen Sie möglicherweise einige Ergebnisse. Elasticsearch bietet einen automatischen Wert, mit dem Elasticsearch die Bearbeitungsentfernung bestimmen lässt.
Zum Beispiel:
Holen Sie sich Kibana_Sampel_Data_ecommerce/_SEARCHWenn Sie den Wert auf automatisch eingestellt haben, bearbeitet Elasticsearch die Entfernung basierend auf der Länge des Suchbegriffs. Sie können auch niedrige und hohe Werte für Auto als:
AUTO:[niedrig] oder AUTO:[hoch]
Um zu verstehen, wie Unschärfe in Elasticsearch funktioniert, überprüfen Sie die Dokumentation.
Fuzzy Multi-Match-Abfrage
Sie können Elasticsearch Multi-Query mit Unschärfe verwenden, wie in der folgenden Beispielabfrage gezeigt:
Holen Sie sich Kibana_Sampel_Data_ecommerce/_SEARCHDie Antwort darauf ist:
Elasticsearch Fuzzy -Suchparameter
Die Feld- und Wertparameter sind erforderlich, wenn die Fuzzy -Abfrage in Elasticsearch verwendet wird. Andere Parameter wie Unschärfe sind optional, können jedoch eine wesentliche Rolle in der Abfrage spielen.
Weitere Parameter sind:
max_expanssions - Steuert die Anzahl der erstellten Variationen. Es ist standardmäßig auf 60 gesetzt. Elasticsearch entmutigt, einen hohen Wert für max_expansions anzugeben, da dies zu einer schlechten Leistung führen kann.
Transpositionen - Bestimmt, ob die Bearbeitungsentfernung Transpositionen von zwei benachbarten Zeichen enthält. Dieser Wert wird standardmäßig auf True gesetzt.
Präfix_Length - Dadurch wird die Anzahl der anfänglichen Zeichen festgelegt, die während der Erweiterung unverändert bleibt. Dieser Wert wird standardmäßig auf 0 gesetzt.
Umschreiben - Legt die Methode zum Umschreiben der Abfrage fest. Der Standardwert wird auf Constant_core gesetzt. Andere Methoden sind:
NOTIZ: Vermeiden Sie es, die Umschreiben -Methode zu ändern, es sei denn, Sie sind sich sicher, was Sie tun.
Abschluss
Elasticsearch ist ein leistungsfähiges Werkzeug für sich. Wie in diesem Tutorial gezeigt, kann es jedoch eine massive Leistung liefern, wenn sie mit Merkmalen wie Fuzzy -Abfragen verbunden sind.
Es ist gut zu beachten, dass Elasticsearch Fuzzy -Abfrage mehr als in diesem Leitfaden besprochen hat. Bitte betrachten Sie die Dokumentation, um mehr zu erfahren.
Vielen Dank für das Lesen!