Maison >base de données >tutoriel mysql >Comment ajouter une fonction de distance Levenshtein à MySQL ?

Comment ajouter une fonction de distance Levenshtein à MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 16:08:15766parcourir

How to Add a Levenshtein Distance Function to MySQL?

Ajout de la fonction Levenshtein à MySQL

Introduction :

Le calcul de la distance de Levenshtein, une métrique pour la similarité des chaînes, est un outil précieux dans diverses applications. Cet article vous guide tout au long du processus d'ajout de la fonction Levenshtein à MySQL, vous permettant de déterminer facilement la similarité entre les chaînes dans vos requêtes de base de données.

Ajout de la fonction :

Pour ajouter la fonction Levenshtein à MySQL, suivez ces étapes :

  1. Connectez-vous à MySQL :Établissez une connexion à votre serveur MySQL à l'aide d'un outil tel que MySQL Workbench ou de la ligne de commande.
  2. Exécutez l'instruction SQL suivante :

    CREATE FUNCTION levenshtein(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS INT
    DETERMINISTIC
    BEGIN
        DECLARE len1 INT;
        DECLARE len2 INT;
        DECLARE i INT;
        DECLARE j INT;
        DECLARE cost INT;
        DECLARE min1 INT;
        DECLARE min2 INT;
        DECLARE min3 INT;
    
        SET len1 = LENGTH(s1);
        SET len2 = LENGTH(s2);
    
        DECLARE matrix INT[][];
        SET matrix = NEW INT[len1 + 1][len2 + 1];
    
        FOR i = 0 TO len1 DO
            SET matrix[i][0] = i;
        END FOR;
    
        FOR j = 0 TO len2 DO
            SET matrix[0][j] = j;
        END FOR;
    
        FOR i = 1 TO len1 DO
            FOR j = 1 TO len2 DO
                IF s1[i] = s2[j] THEN
                    SET cost = 0;
                ELSE
                    SET cost = 1;
                END IF;
    
                SET min1 = matrix[i - 1][j] + 1;
                SET min2 = matrix[i][j - 1] + 1;
                SET min3 = matrix[i - 1][j - 1] + cost;
    
                IF min1 < min2 THEN
                    SET min2 = min1;
                END IF;
    
                IF min2 < min3 THEN
                    SET min3 = min2;
                END IF;
    
                SET matrix[i][j] = min3;
            END FOR;
        END FOR;
    
        RETURN matrix[len1][len2];
    END
  3. Vérifier la création de fonction : Exécuter une requête pour vous assurer que la fonction a été exécutée avec succès ajouté :

    SELECT levenshtein('abcde', 'abced');

    Vous devriez obtenir le résultat attendu de 2, indiquant la distance entre les deux cordes.

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