MySQL Levenshtein : simplifier la correspondance de termes avec une seule requête
La distance de Levenshtein est une mesure de la similitude entre deux chaînes. Il est couramment utilisé pour la vérification orthographique et la correction de texte. Dans MySQL, il peut être exploité pour trouver des termes similaires avec une requête SQL efficace, éliminant ainsi le besoin d'un filtrage PHP fastidieux.
Considérez l'extrait de code PHP suivant, qui récupère les termes d'une base de données et calcule leur distance de Levenshtein par rapport à un mot d'entrée donné :
$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']; } }
Ce code parcourt tous les termes de la base de données, calcule la distance de Levenshtein pour chacun et filtre ceux avec des distances supérieures ou égales à 5. Cependant, cette approche peut être inefficace, en particulier pour les grands ensembles de données.
Pour optimiser ce processus, nous pouvons utiliser une fonction MySQL Levenshtein. Cette fonction nous permet de calculer la distance de Levenshtein directement dans la requête SQL, éliminant ainsi le besoin de filtrage basé sur PHP. Le résultat est une requête plus efficace et concise :
$word = mysql_real_escape_string($word); mysql_qery("SELECT `term` FROM `words` WHERE levenshtein('$word', `term`) BETWEEN 0 AND 4");
Cette requête récupère tous les termes dont la distance de Levenshtein par rapport au mot saisi est comprise entre 0 et 4, offrant un moyen pratique et évolutif de trouver des termes similaires dans la base de données. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!