LEVDIST( )-Funktion

Gibt die Levenshtein-Distanz zwischen zwei angegebenen Zeichenfolgen zurück. Diese gibt an, wie sehr sich die beiden Zeichenfolgen voneinander unterscheiden.

Syntax

LEVDIST(Zeichenfolge1; Zeichenfolge2 <;Groß-/Kleinschreibung beachten>)

Parameter

Name Typ Beschreibung
Zeichenfolge1 Zeichen Die erste Zeichenfolge des Vergleichs.
Zeichenfolge2 Zeichen Die zweite Zeichenfolge des Vergleichs.

Groß-/Kleinschreibung beachten

Optional

logisch

Geben Sie T für einen Vergleich von Zeichenfolgen an, bei dem zwischen Groß- und Kleinschreibung unterschieden wird, und F, um Groß- und Kleinschreibung zu ignorieren.

Durch Auslassen wird der Standardwert „T“ verwendet.

Ausgabe

Numerisch. Der Wert ist die Levenshtein-Distanz zwischen zwei Zeichenfolgen.

Beispiele

Einfache Beispiele

Gibt „3“ zurück (zwei Ersetzungen und eine Einfügung sind erforderlich, um „smith“ in „Smythe“ umzuwandeln):

LEVDIST("smith";"Smythe")

Gibt „2“ zurück. Da die Groß-/Kleinschreibung ignoriert wird, sind nur zwei Ersetzungen erforderlich, um „smith‘s“ in „Smythes“ umzuwandeln:

LEVDIST("smith's";"Smythes";F)

Gibt die Levenshtein-Distanz zwischen den einzelnen Werten im Feld Nachname und der Zeichenfolge „Smith“ zurück:

LEVDIST(TRIM(Nachname);"Smith")

Weiterführende Beispiele

Rangfolge der Werte im Vergleich mit „Smith"

Erstellen Sie das Kalkulationsfeld Lev_Dist, um die Levenshtein-Distanz zwischen „Smith“ und jedem Wert innerhalb des Felds Nachname anzuzeigen:

DEFINE FIELD Lev_Dist COMPUTED LEVDIST(TRIM(Nachname);"Smith"; F)

Fügen Sie das Kalkulationsfeld Lev_Dist der Ansicht hinzu. Nehmen Sie dann eine Schnellsortierung in aufsteigender Reihenfolge vor, damit alle Werte im Feld Nachname nach ihren Unterschieden mit „Smith“ aufgelistet werden.

Fuzzy-Duplikate für „Smith“ isolieren

Erstellen Sie einen Filter, der alle Werte im Feld Nachname isoliert, die sich innerhalb einer angegebenen Levenshtein-Distanz von „Smith“ befinden:

SET FILTER TO LEVDIST(TRIM(Nachname);"Smith"; F) < 3

Durch eine Änderung der Zahl im Ausdruck können Sie den Betrag der Levenshtein-Distanz in den gefilterten Werten anpassen.

Bemerkungen

Wann Sie LEVDIST( ) verwenden sollen

Verwenden Sie die LEVDIST( )-Funktion, um nahezu identische Werte (Fuzzy-Duplikate) zu suchen oder eine uneinheitliche Buchstabierung in manuell eingegebenen Daten zu lokalisieren. LEVDIST( ) erkennt auch exakte Duplikate.

Funktionsweise

Die LEVDIST( )-Funktion gibt die Levenshtein-Distanz zwischen den beiden bewerteten Zeichenfolgen zurück. Dabei handelt es sich um einen Wert, der die Mindestzahl von Bearbeitungen einzelner Zeichen darstellt, die erforderlich sind, um eine Zeichenfolge auf eine andere zu überführen.

Jede erforderliche Bearbeitung steigert den Wert der Levenshtein-Distanz um 1. Je größer die Levenshtein-Distanz, desto größer ist der Unterschied zwischen den zwei Zeichenfolgen. Eine Distanz von Null (0) bedeutet, dass die Zeichenfolgen identisch sind.

Bearbeitungsarten

Die Bearbeitungen können drei Arten aufweisen:

  • Einfügen
  • Löschen
  • Ersetzen

Buchstabendreher (zwei nebeneinanderliegende Buchstaben in falscher Reihenfolge) werden von durch den Levenshtein-Algorithmus nicht erkannt und zählen als zwei Bearbeitungsschritte – insbesondere zweifaches Ersetzen.

Nicht alphanumerische Zeichen

Interpunktionszeichen, Sonderzeichen und Leerzeichen werden als einzelne Zeichen behandelt, genauso wie Buchstaben und Zahlen.

Groß- und Kleinschreibung von Zahlen

Die Änderung der Groß- und Kleinschreibung eines Zeichens zählt als eine Ersetzung, wenn die Einstellung Groß-/Kleinschreibung beachten nicht deaktiviert wurde.

Die Position von Zeichen

Bei der Levenshtein-Distanz wird die Position von Zeichen berücksichtigt. Dieselben Zeichen können in unterschiedlicher Anordnung zu einer anderen Levenshtein-Distanz führen.

Gibt „2“ zurück:

LEVDIST("abc"; "dec")

Gibt „3“ zurück:

LEVDIST("abc"; "cde")

TRIM( ) mit LEVDIST( ) verwenden

Um akkurate Ergebnisse zu erzielen, wenn Sie mit LEVDIST( ) eine Literalzeichenfolge wie „Smith“ mit einem Zeichenfeld vergleichen, müssen mit der TRIM( )-Funktion abschließende Leerzeichen aus dem Feld entfernt werden.

Wenn Sie zwei Felder miteinander vergleichen, müssen Sie die TRIM( )-Funktion für jedes Feld verwenden.

Der Levenshtein-Algorithmus zählt Leerzeichen als Zeichen. Daher werden abschließende Leerzeichen in die Berechnung der Anzahl erforderlicher Bearbeitungen zum Abgleichen von zwei Zeichenfolgen eingeschlossen.

Verwandte Funktionen

  • ISFUZZYDUP( ) bietet eine alternative Methode zum Vergleichen von Zeichenfolgen anhand der Levenshtein-Distanz.

    Im Gegensatz zum Standardverhalten von LEVDIST( ) unterscheidet ISFUZZYDUP( ) nicht zwischen Groß- und Kleinschreibung.

  • DICECOEFFICIENT( ) ignoriert beim Vergleich von Zeichenfolgen die relative Position von Zeichen oder Zeichenblöcken völlig oder berücksichtigt sie weniger stark.
  • SOUNDSLIKE( ) und SOUNDEX( ) vergleichen Zeichenfolgen anhand eines phonetischen (Klang) anstatt eines orthografischen Vergleichs (Buchstabierung).