Problem:
Sie haben zwei Strings in MySQL und müssen deren bestimmen Ähnlichkeitsprozentsatz. Wenn Sie beispielsweise die Zeichenfolgen „@a = ‚Willkommen bei Stack Overflow‘“ und „@b = ‚Hallo bei Stack Overflow‘“ verwenden, möchten Sie die Ähnlichkeit zwischen ihnen ermitteln.
Lösung:
Erstellen Sie die Levenshtein-Distanz Funktion:
Verwenden Sie die folgende Funktion, um den Levenshtein-Abstand zwischen zwei Saiten zu berechnen:
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC BEGIN ... END
Die obige Funktion wurde von der unter http://www.artfulsoftware bereitgestellten übernommen .com/infotree/queries.php#552.
Erstellen Sie die Levenshtein-Ähnlichkeitsverhältnisfunktion:
Um den Levenshtein-Abstand in ein Ähnlichkeitsverhältnis umzuwandeln, verwenden Sie diese Funktion:
CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11) DETERMINISTIC BEGIN ... END
Verwendung:
Um den Ähnlichkeitsprozentsatz zwischen zwei Zeichenfolgen zu berechnen, verwenden Sie Folgendes Formel:
similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
Beispiel:
SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
Diese Abfrage gibt den Ähnlichkeitsprozentsatz zwischen den beiden Zeichenfolgen zurück, der in diesem Fall 66 % betragen würde.
Das obige ist der detaillierte Inhalt vonWie berechnet man den Prozentsatz der String-Ähnlichkeit in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!