Problème :
Vous avez deux chaînes dans MySQL et devez déterminer leur pourcentage de similarité. Par exemple, étant donné les chaînes "@a = 'Welcome to Stack Overflow'" et "@b = 'Bonjour à stack overflow'", vous souhaitez trouver la similitude entre elles.
Solution :
Créer la distance de Levenshtein Fonction :
Utilisez la fonction suivante pour calculer la distance de Levenshtein entre deux chaînes :
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC BEGIN ... END
La fonction ci-dessus est adaptée de celle fournie sur http://www.artfulsoftware .com/infotree/queries.php#552.
Créez le Fonction de rapport de similarité de Levenshtein :
Pour convertir la distance de Levenshtein en un rapport de similarité, utilisez cette fonction :
CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11) DETERMINISTIC BEGIN ... END
Utilisation :
Pour calculer le pourcentage de similarité entre deux chaînes, utilisez ce qui suit formule :
similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
Exemple :
SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
Cette requête renverra le pourcentage de similarité entre les deux chaînes, qui dans ce cas serait de 66 %.
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!