Maison >base de données >tutoriel mysql >Comment implémenter la fonction Levenshtein dans MySQL ?
Comment implémenter la fonction Levenshtein dans MySQL
Vous souhaitez intégrer la fonction Levenshtein dans votre base de données MySQL pour faciliter les comparaisons de similarité de chaînes . Voici un guide étape par étape sur la façon d'y parvenir :
Comme mentionné, vous pouvez acquérir le code de la fonction de distance de Levenshtein ici. Une fois que vous avez le code, procédez aux étapes suivantes :
Établissez une connexion à votre serveur MySQL en utilisant votre méthode préférée, telle que MySQL Workbench.
Exécutez l'instruction suivante pour créer la fonction Levenshtein dans votre base de données MySQL :
CREATE FUNCTION levenshtein(a VARCHAR(255), b VARCHAR(255)) RETURNS SMALLINT DETERMINISTIC BEGIN DECLARE i, j, s VARCHAR(255), costs VARCHAR(255); DECLARE c, mina, minb, napi, napj, cost_a, cost_b, di, dj, new COSTTYPE[]; SET s = REPEAT(' ',LENGTH(b)+2); SET costs = REPEAT(' ',(LENGTH(b)+2) * (LENGTH(a)+2)); SET c = 1; WHILE c <= LENGTH(a) DO SET new = costs + 1; SET mina = c + 1; SET i = 1; WHILE i <= LENGTH(b) DO SET napj = costs + (i * 2) + 1; SET di = CHAR_LENGTH(SUBSTR(a,c,1)); SET dj = CHAR_LENGTH(SUBSTR(b,i,1)); SET napj = costs + (i * 2) + 2; IF di = dj AND di > 0 AND dj > 0 THEN IF di > 1 AND di < 127 AND dj > 1 AND dj < 127 AND (di-dj=-1 OR di-dj=1) AND SUBSTR(a,c,1) = SUBSTR(b,i,1) THEN SET napi = costs + 2; ELSE SET napi = costs + (i * 2) + 3; END IF; ELSE SET napi = costs + 2; END IF; SET cost_a = napj - mina; SET cost_b = napi - napj; SET mina = new + (i * 2) + 1; SET minb = napi + 1; IF cost_a < cost_b AND cost_a < mina THEN SET c = di + 1; SET costs = new; ELSEIF cost_b < mina THEN SET di = dj + 1; SET costs = new; ELSE SET mina = new + (i * 2) + 1; END IF; SET napj = mina; SET mina = napi; SET i = i + 1; END WHILE; SET c = c + 1; END WHILE; RETURN napj - mina; END;
Vous pouvez confirmer que la fonction a été créée avec succès en interrogeant it :
SHOW FUNCTION STATUS WHERE name = 'levenshtein'
Pour utiliser la fonction Levenshtein, référencez-la simplement dans vos requêtes. Par exemple, pour calculer la distance de Levenshtein entre les chaînes 'abcde' et 'abced', vous utiliserez la requête suivante :
SELECT levenshtein('abcde', 'abced')
Cette requête renverra un résultat de 2, indiquant la distance de Levenshtein entre les deux chaînes.
Pour utiliser la fonction Levenshtein en PHP, vous pouvez exécuter des requêtes MySQL à partir de votre code. Par exemple :
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); $query = "SELECT levenshtein('abcde', 'abced')"; $result = $mysqli->query($query); while ($row = $result->fetch_assoc()) { echo $row['levenshtein']; }
Cet extrait de code se connecte à une base de données MySQL, exécute la requête spécifiée et imprime la distance de Levenshtein renvoyée par la base de données.
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!