selon Finding how similar two strings are il existe plusieurs méthodes pour calculer la mesure de similarité entre deux chaînes. Soundfox est un très mauvais algorithme et il est actuellement disponible pour mysql. Existe-t-il une autre implémentation de méthode disponible pour mysql?trouver des phrases similaires dans mysql
3
A
Répondre
2
est ici un UDF you can load in windows ou one you can compile for linux. ceux-ci seront beaucoup plus rapides que la procédure stockée.
4
Bien sûr, ont une bonne implémentation de MySQL de Levenshtein distance:
CREATE FUNCTION LEVENSHTEIN (s1 VARCHAR(255), s2 VARCHAR(255))
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;
DECLARE s1_char CHAR;
DECLARE cv0, cv1 VARBINARY(256);
SET s1_len = CHAR_LENGTH(s1), s2_len = CHAR_LENGTH(s2), cv1 = 0x00, j = 1, i = 1, c = 0;
IF s1 = s2 THEN
RETURN 0;
ELSEIF s1_len = 0 THEN
RETURN s2_len;
ELSEIF s2_len = 0 THEN
RETURN s1_len;
ELSE
WHILE j <= s2_len DO
SET cv1 = CONCAT(cv1, UNHEX(HEX(j))), j = j + 1;
END WHILE;
WHILE i <= s1_len DO
SET s1_char = SUBSTRING(s1, i, 1), c = i, cv0 = UNHEX(HEX(i)), j = 1;
WHILE j <= s2_len DO
SET c = c + 1;
IF s1_char = SUBSTRING(s2, j, 1) THEN SET cost = 0; ELSE SET cost = 1; END IF;
SET c_temp = CONV(HEX(SUBSTRING(cv1, j, 1)), 16, 10) + cost;
IF c > c_temp THEN SET c = c_temp; END IF;
SET c_temp = CONV(HEX(SUBSTRING(cv1, j+1, 1)), 16, 10) + 1;
IF c > c_temp THEN SET c = c_temp; END IF;
SET cv0 = CONCAT(cv0, UNHEX(HEX(c))), j = j + 1;
END WHILE;
SET cv1 = cv0, i = i + 1;
END WHILE;
END IF;
RETURN c;
END
Questions connexes
- 1. Mysql rejoindre sur des colonnes similaires
- 2. Comment trouver des doublons dans MySQL
- 3. Comment trouver des phrases de journal NMEA avec grep?
- 4. Techniques performantes pour trouver des valeurs similaires dans SQL?
- 5. Comparer des phrases (chaînes) dans AS3
- 6. lire des phrases NMEA de GPS
- 7. Phrases de retour dans .NET
- 8. place plusieurs champs similaires dans un tableau multidimensionnel - php mysql
- 9. Globalisation et liens dans les phrases
- 10. Sélectionnez des lignes similaires dans la même table
- 11. MySQL - trouver des tuples en double
- 12. Raccourcissez un texte et ne gardez que des phrases importantes
- 13. bibliothèque qui identifie des images similaires
- 14. cours similaires avec des signatures différentes
- 15. Comment trouver des phrases de cas de titre à partir d'un passage ou d'un groupe de paragraphes
- 16. Accès à des propriétés nommées similaires dans une boucle
- 17. Générateur de phrases anglais aléatoire simple
- 18. trouver également des données à partir de deux tables dans mysql
- 19. Venn Diagramme d'une liste de phrases
- 20. Requêtes DRY et similaires
- 21. Trouver des entrées dans une table MySQL en fonction des conditions d'une autre table
- 22. Count multidisque similaires clés
- 23. Comment puis-je récupérer des listes dans des listes (similaires aux tableaux multidimensionnels)?
- 24. Comment trouver des données manquantes dans un tableau ou dans une table mySQL?
- 25. Trouver des expressions/mots entre HTML en utilisant PHP
- 26. Trouver la plupart des enregistrements.
- 27. Aidez-moi à trouver une requête MySQL
- 28. SQL: trouver des percentiles
- 29. Comment imprimer des informations similaires à phpinfo() mais pour ASP.NET?
- 30. Comment traiter deux types similaires en un?