Heim >Backend-Entwicklung >PHP-Tutorial >Wie berechnet man die Levenshtein-Distanz effizient in MySQL und PHP?

Wie berechnet man die Levenshtein-Distanz effizient in MySQL und PHP?

Barbara Streisand
Barbara StreisandOriginal
2024-11-14 17:57:02577Durchsuche

How to Calculate Levenshtein Distance Efficiently in MySQL and PHP?

Levenshtein-Distanzberechnung in MySQL und PHP

Die Levenshtein-Distanz ist eine beliebte Metrik zur Messung der Ähnlichkeit zwischen zwei Zeichenfolgen. Es findet in einer Vielzahl von Szenarien Anwendung, insbesondere bei der Rechtschreibprüfung und in Suchmaschinen. In diesem Artikel wird erläutert, wie Sie mit PHP den Levenshtein-Abstand zwischen einem bestimmten Begriff und allen Begriffen in einer MySQL-Datenbank berechnen.

Ursprüngliche PHP-Implementierung

Der ursprüngliche PHP-Code, den Sie bereitgestellt haben fragt die Datenbank ab, um alle Begriffe abzurufen, und führt dann eine Levenshtein-Distanzberechnung für jeden Begriff in PHP durch. Dieser Ansatz ist ineffizient, da er mehrere Datenbankabfragen erfordert.

$word = strtolower($_GET['term']);

$lev = 0;

$q = mysql_query("SELECT `term` FROM `words`");
while($r = mysql_fetch_assoc($q)) {
    $r['term'] = strtolower($r['term']);

    $lev = levenshtein($word, $r['term']);

    if($lev >= 0 && $lev < 5) {
        $word = $r['term'];
    }
}

Verbesserte MySQL-Abfrage

Um die Effizienz zu verbessern, können Sie die integrierte LEVENSHTEIN()-Funktion von MySQL nutzen . Diese Funktion berechnet den Levenshtein-Abstand zwischen zwei Zeichenfolgen, sodass PHP diese Berechnungen nicht mehr durchführen muss.

$word = mysql_real_escape_string($word);
$query = "SELECT `term` FROM `words` WHERE LEVENSHTEIN('$word', `term`) BETWEEN 0 AND 4";

Diese Abfrage ruft alle Begriffe ab, deren Levenshtein-Abstand vom angegebenen Begriff in einen angegebenen Bereich (0-4) fällt in diesem Fall). Durch die Ausführung dieser einzelnen Abfrage können Sie die gewünschten Ergebnisse ohne den Aufwand mehrerer Datenbankabfragen und PHP-Berechnungen erhalten.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Levenshtein-Distanz effizient in MySQL und PHP?. 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