Maison > base de données > tutoriel mysql > Comment implémenter une fonction de distance Levenshtein dans MySQL ?

Comment implémenter une fonction de distance Levenshtein dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-27 15:05:10
original
745 Les gens l'ont consulté

How to Implement a Levenshtein Distance Function in MySQL?

Ajout de la fonction Levenshtein à MySQL

Dans MySQL, l'ajout d'une fonction personnalisée comme la distance Levenshtein vous oblige à créer une procédure stockée ou une fonction. Cependant, vous pouvez exploiter le code fourni dans la publication WordPress référencée en suivant ces étapes :

  1. Connectez-vous à MySQL : Établissez une connexion à votre serveur MySQL en utilisant votre méthode préférée (par ex. , ligne de commande, MySQL Workbench).
  2. Créez la fonction stockée : Exécutez l'instruction suivante dans votre SQL éditeur :
DELIMITER $$
CREATE FUNCTION levenshtein(str1 VARCHAR(255), str2 VARCHAR(255))
  RETURNS INT
  DETERMINISTIC
BEGIN
  DECLARE str1len, str2len, i, j, cost, c, vtemp INT;
  DECLARE vmatrix VARCHAR(255);

  CALL max(length(str1), length(str2), str1len, str2len);

  SET vtemp = power(2, str2len) * power(2, str1len);
  SET vmatrix = LPAD('0', vtemp, '0');

  SET i = 1;
  WHILE i <= str1len DO
    SET t = SUBSTR(str1, i, 1);
    SET j = 1;
    WHILE j <= str2len DO
      SET s = SUBSTR(str2, j, 1);

      IF i = 1 THEN
        CALL min3(j, vmatrix, i * j, j + 1);
      END IF;
      IF j = 1 THEN
        CALL min3(i, vmatrix, i, i * str2len + j);
      END IF;

      SET cost = IF(t = s, 0, 1);
      CALL min3(vmatrix, vmatrix, cost + vmatrix, i * str2len + j);

      CALL min3(i, vmatrix, vmatrix, i * str2len + j + 1);
      CALL min3(j, vmatrix, vmatrix, (i + 1) * str2len + j);

      SET j = j + 1;
    END WHILE;
  SET i = i + 1;
END WHILE;

  RETURN vmatrix;
END
$$
DELIMITER ;
Copier après la connexion
  1. Tester la fonction : Vous pouvez maintenant exécuter la requête suivante pour tester la fonction de distance de Levenshtein :
SELECT levenshtein('abcde', 'abced');
Copier après la connexion

Exemple :

La requête renvoie 2, confirmant que la distance Levenshtein entre 'abcde' et 'abced' est de 2.

Utilisation en PHP :

Pour utiliser la fonction Levenshtein dans PHP lors de la connexion à MySQL, vous pouvez exécuter le code suivant :

$sql = 'SELECT levenshtein(?, ?) AS distance';
$stmt = $conn->prepare($sql);
$stmt->bind_param('ss', $str1, $str2);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
  $distance = $row['distance'];
}
Copier après la connexion

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 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