Cara Mengira Kesamaan Rentetan dalam MySQL
Untuk mengira persamaan antara dua rentetan dalam MySQL, kita boleh memanfaatkan fungsi manipulasi rentetan dan ungkapan matematik . Pertimbangkan contoh berikut di mana kita mempunyai dua rentetan:
SET @a = "Welcome to Stack Overflow"; SET @b = "Hello to stack overflow";
Pengiraan Kesamaan Menggunakan Perkataan Bertindih
Kita boleh mengira bilangan perkataan yang muncul dalam kedua-dua rentetan dan menggunakan itu sebagai ukuran persamaan. Dalam kes ini, perkataan berikut bertindih:
Mengira Indeks Persamaan
The indeks kesamaan dikira seperti berikut:
similarity = count(similar words between @a and @b) / (count(@a) + count(@b) - count(intersection))
Menggunakan Fungsi Levenshtein
MySQL tidak menyokong fungsi asli untuk persamaan rentetan. Walau bagaimanapun, kita boleh menggunakan fungsi takrif pengguna (UDF) yang dipanggil levenshtein untuk mengira jarak Levenshtein, yang mengukur bilangan suntingan (sisipan, pemadaman atau penggantian) yang diperlukan untuk menukar satu rentetan kepada rentetan yang lain.
Mencipta Levenshtein UDF
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC ...
Untuk butiran lanjut tentang Levenshtein UDF, sila rujuk kepada coretan kod yang disediakan.
Mengira Nisbah Kesamaan
Akhir sekali, kita boleh mengira nisbah kesamaan dengan menormalkan jarak Levenshtein terhadap panjang maksimum daripada dua rentetan:
CREATE FUNCTION `levenshtein_ratio`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC ...
Sebagai contoh, nisbah persamaan antara @a dan @b menggunakan fungsi nisbah Levenshtein boleh dikira sebagai:
SELECT levenshtein_ratio(@a, @b);
Ini akan mengembalikan nisbah persamaan sebagai nilai peratusan.
Atas ialah kandungan terperinci Bagaimana Mengukur Kesamaan Rentetan dalam MySQL Menggunakan Perkataan Bertindih dan Jarak Levenshtein?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!