Heim > Datenbank > MySQL-Tutorial > Wie kann die Levenshtein-Funktion von MySQL Term-Matching-Abfragen optimieren?

Wie kann die Levenshtein-Funktion von MySQL Term-Matching-Abfragen optimieren?

Linda Hamilton
Freigeben: 2024-12-09 15:31:15
Original
691 Leute haben es durchsucht

How Can MySQL's Levenshtein Function Optimize Term Matching Queries?

MySQL Levenshtein: Vereinfachen der Begriffsübereinstimmung mit einer einzelnen Abfrage

Der Levenshtein-Abstand ist ein Maß für die Ähnlichkeit zwischen zwei Zeichenfolgen. Es wird häufig zur Rechtschreibprüfung und Textkorrektur verwendet. In MySQL kann es genutzt werden, um ähnliche Begriffe mit einer effizienten SQL-Abfrage zu finden, wodurch eine umständliche PHP-Filterung entfällt.

Bedenken Sie den folgenden PHP-Codeausschnitt, der Begriffe aus einer Datenbank abruft und deren Levenshtein-Distanz berechnet ein gegebenes Eingabewort:

$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'];
    }
}
Nach dem Login kopieren

Dieser Code durchläuft alle Begriffe in der Datenbank, berechnet für jeden die Levenshtein-Distanz und filtert Entfernen Sie solche mit Abständen größer oder gleich 5. Dieser Ansatz kann jedoch ineffizient sein, insbesondere bei großen Datensätzen.

Um diesen Prozess zu optimieren, können wir eine MySQL-Levenshtein-Funktion verwenden. Mit dieser Funktion können wir die Levenshtein-Distanz direkt in der SQL-Abfrage berechnen, sodass keine PHP-basierte Filterung erforderlich ist. Das Ergebnis ist eine effizientere und präzisere Abfrage:

$word = mysql_real_escape_string($word);
mysql_qery("SELECT `term` FROM `words` WHERE levenshtein('$word', `term`) BETWEEN 0 AND 4");
Nach dem Login kopieren

Diese Abfrage ruft alle Begriffe ab, deren Levenshtein-Abstand vom Eingabewort zwischen 0 und 4 liegt, und bietet so eine bequeme und skalierbare Möglichkeit, ähnliche Begriffe in der Datenbank zu finden .

Das obige ist der detaillierte Inhalt vonWie kann die Levenshtein-Funktion von MySQL Term-Matching-Abfragen optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage