Masalah:
Anda mempunyai dua rentetan dalam MySQL dan perlu menentukannya peratusan persamaan. Sebagai contoh, memandangkan rentetan "@a = 'Selamat Datang ke Limpahan Tindanan'" dan "@b = 'Hello untuk limpahan tindanan'", anda ingin mencari persamaan antara mereka.
Penyelesaian:
Buat Jarak Levenshtein Fungsi:
Gunakan fungsi berikut untuk mengira jarak Levenshtein antara dua rentetan:
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC BEGIN ... END
Fungsi di atas disesuaikan daripada yang disediakan di http://www.artfulsoftware .com/infotree/queries.php#552.
Buat Fungsi Nisbah Kesamaan Levenshtein:
Untuk menukar jarak Levenshtein kepada nisbah persamaan, gunakan fungsi ini:
CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11) DETERMINISTIC BEGIN ... END
Penggunaan:
Untuk mengira peratusan persamaan antara dua rentetan, gunakan yang berikut formula:
similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
Contoh:
SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
Pertanyaan ini akan mengembalikan peratusan persamaan antara dua rentetan, yang dalam kes ini ialah 66%.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Peratusan Kesamaan String dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!