Maison > base de données > tutoriel mysql > Comment puis-je calculer le pourcentage de similarité de chaînes dans MySQL en utilisant la distance de Levenshtein ?

Comment puis-je calculer le pourcentage de similarité de chaînes dans MySQL en utilisant la distance de Levenshtein ?

Patricia Arquette
Libérer: 2024-12-13 05:48:12
original
566 Les gens l'ont consulté

How can I Calculate String Similarity Percentage in MySQL using Levenshtein Distance?

Calcul de la similarité des chaînes de texte dans MySQL

Dans les systèmes de gestion de bases de données comme MySQL, comparer la similarité des chaînes de texte est une exigence courante. Cet article explore une approche polyvalente pour calculer le pourcentage de similarité entre deux chaînes à l'aide des fonctions MySQL.

Calcul de la similarité des chaînes à l'aide de la distance de Levenshtein

La distance de Levenshtein est une métrique qui mesure le nombre de modifications (insertions , suppressions ou substitutions) nécessaires pour transformer une chaîne en une autre. Des scores de similarité plus élevés indiquent une ressemblance plus étroite entre les chaînes.

Dans MySQL, la fonction LEVENSHTEIN() calcule la distance de Levenshtein entre deux chaînes. Pour obtenir le pourcentage de similarité, nous pouvons utiliser la formule suivante :

Similarity Percentage = (1 - (Levenshtein Distance / Length of Longest String)) * 100
Copier après la connexion

Implémentation MySQL

Pour implémenter cette approche dans MySQL, créez les deux fonctions suivantes :

LEVENSHTEIN() Fonction :

CREATE FUNCTION `LEVENSHTEIN`(s1 TEXT, s2 TEXT) RETURNS INT(11)
DETERMINISTIC
BEGIN
    # ... Function implementation ...
END;
Copier après la connexion

LEVENSHTEIN_RATIO() Fonction :

CREATE FUNCTION `LEVENSHTEIN_RATIO`(s1 TEXT, s2 TEXT) RETURNS INT(11)
DETERMINISTIC
BEGIN
    # ... Function implementation ...
END;
Copier après la connexion

Exemple d'utilisation

Considérant l'exemple fourni dans la question :

SET @a = "Welcome to Stack Overflow";
SET @b = "Hello to stack overflow";
Copier après la connexion

La requête pour calculer le pourcentage de similarité entre @a et @b serait be :

SELECT LEVENSHTEIN_RATIO(@a, @b) AS SimilarityPercentage;
Copier après la connexion

Cette requête renverrait une valeur de 60, indiquant une similarité de 60 % entre les deux chaînes.

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