Maison >développement back-end >tutoriel php >Comment calculer efficacement la distance de Levenshtein dans MySQL et PHP ?

Comment calculer efficacement la distance de Levenshtein dans MySQL et PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-14 17:57:02578parcourir

How to Calculate Levenshtein Distance Efficiently in MySQL and PHP?

Calcul de la distance de Levenshtein dans MySQL et PHP

La distance de Levenshtein est une métrique populaire pour mesurer la similarité entre deux chaînes. Il trouve des applications dans une variété de scénarios, notamment dans la vérification orthographique et les moteurs de recherche. Cet article explique comment calculer la distance de Levenshtein entre un terme donné et tous les termes d'une base de données MySQL à l'aide de PHP.

Implémentation PHP originale

Le code PHP original que vous avez fourni interroge la base de données pour récupérer tous les termes puis effectue un calcul de distance de Levenshtein sur chaque terme en PHP. Cette approche est inefficace car elle nécessite plusieurs requêtes de base de données.

$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'];
    }
}

Requête MySQL améliorée

Pour améliorer l'efficacité, vous pouvez utiliser la fonction LEVENSHTEIN() intégrée de MySQL. . Cette fonction calcule la distance de Levenshtein entre deux chaînes, éliminant ainsi la nécessité pour PHP d'effectuer ces calculs.

$word = mysql_real_escape_string($word);
$query = "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 terme donné se situe dans une plage spécifiée (0-4 dans ce cas). En exécutant cette requête unique, vous pouvez obtenir les résultats souhaités sans la surcharge de plusieurs requêtes de base de données et calculs PHP.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn