Heim >Datenbank >MySQL-Tutorial >Wie kann ich den Prozentsatz der String-Ähnlichkeit in MySQL mithilfe der Levenshtein-Distanz berechnen?

Wie kann ich den Prozentsatz der String-Ähnlichkeit in MySQL mithilfe der Levenshtein-Distanz berechnen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 05:48:12677Durchsuche

How can I Calculate String Similarity Percentage in MySQL using Levenshtein Distance?

Berechnen der String-Ähnlichkeit in MySQL

In Datenbankverwaltungssystemen wie MySQL ist der Vergleich der Ähnlichkeit von Textstrings eine häufige Anforderung. In diesem Artikel wird ein vielseitiger Ansatz zur Berechnung des Ähnlichkeitsprozentsatzes zwischen zwei Zeichenfolgen mithilfe von MySQL-Funktionen untersucht.

Berechnung der Zeichenfolgenähnlichkeit mithilfe der Levenshtein-Distanz

Die Levenshtein-Distanz ist eine Metrik, die die Anzahl der Bearbeitungen (Einfügungen) misst , Löschungen oder Ersetzungen), die erforderlich sind, um eine Zeichenfolge in eine andere umzuwandeln. Höhere Ähnlichkeitswerte weisen auf eine größere Ähnlichkeit zwischen den Zeichenfolgen hin.

In MySQL berechnet die Funktion LEVENSHTEIN() den Levenshtein-Abstand zwischen zwei Zeichenfolgen. Um den Ähnlichkeitsprozentsatz zu erhalten, können wir die folgende Formel verwenden:

Similarity Percentage = (1 - (Levenshtein Distance / Length of Longest String)) * 100

MySQL-Implementierung

Um diesen Ansatz in MySQL zu implementieren, erstellen Sie die folgenden zwei Funktionen:

LEVENSHTEIN() Funktion:

CREATE FUNCTION `LEVENSHTEIN`(s1 TEXT, s2 TEXT) RETURNS INT(11)
DETERMINISTIC
BEGIN
    # ... Function implementation ...
END;

LEVENSHTEIN_RATIO() Funktion:

CREATE FUNCTION `LEVENSHTEIN_RATIO`(s1 TEXT, s2 TEXT) RETURNS INT(11)
DETERMINISTIC
BEGIN
    # ... Function implementation ...
END;

Beispielverwendung

Betrachten Sie das in der Frage bereitgestellte Beispiel:

SET @a = "Welcome to Stack Overflow";
SET @b = "Hello to stack overflow";

Die Abfrage zur Berechnung des Ähnlichkeitsprozentsatzes zwischen @a und @b würde sein:

SELECT LEVENSHTEIN_RATIO(@a, @b) AS SimilarityPercentage;

Diese Abfrage würde einen Wert von 60 zurückgeben, was eine 60-prozentige Ähnlichkeit zwischen den beiden Zeichenfolgen angibt.

Das obige ist der detaillierte Inhalt vonWie kann ich den Prozentsatz der String-Ähnlichkeit in MySQL mithilfe der Levenshtein-Distanz berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn