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

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