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
Libérer: 2024-12-09 16:08:15
original
753 Les gens l'ont consulté

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
    Copier après la connexion
  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');
    Copier après la connexion

    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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal