Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Fungsi Jarak Levenshtein dalam MySQL?
Menambah Fungsi Levenshtein pada MySQL
Dalam MySQL, menambah fungsi tersuai seperti jarak Levenshtein memerlukan anda mencipta prosedur atau fungsi tersimpan. Walau bagaimanapun, anda boleh memanfaatkan kod yang disediakan dalam catatan WordPress yang dirujuk dengan mengikuti langkah berikut:
DELIMITER $$ CREATE FUNCTION levenshtein(str1 VARCHAR(255), str2 VARCHAR(255)) RETURNS INT DETERMINISTIC BEGIN DECLARE str1len, str2len, i, j, cost, c, vtemp INT; DECLARE vmatrix VARCHAR(255); CALL max(length(str1), length(str2), str1len, str2len); SET vtemp = power(2, str2len) * power(2, str1len); SET vmatrix = LPAD('0', vtemp, '0'); SET i = 1; WHILE i <= str1len DO SET t = SUBSTR(str1, i, 1); SET j = 1; WHILE j <= str2len DO SET s = SUBSTR(str2, j, 1); IF i = 1 THEN CALL min3(j, vmatrix, i * j, j + 1); END IF; IF j = 1 THEN CALL min3(i, vmatrix, i, i * str2len + j); END IF; SET cost = IF(t = s, 0, 1); CALL min3(vmatrix, vmatrix, cost + vmatrix, i * str2len + j); CALL min3(i, vmatrix, vmatrix, i * str2len + j + 1); CALL min3(j, vmatrix, vmatrix, (i + 1) * str2len + j); SET j = j + 1; END WHILE; SET i = i + 1; END WHILE; RETURN vmatrix; END $$ DELIMITER ;
SELECT levenshtein('abcde', 'abced');
Contoh:
The pertanyaan mengembalikan 2, mengesahkan bahawa jarak Levenshtein antara 'abcde' dan 'abced' ialah 2.
Penggunaan dalam PHP:
Untuk menggunakan fungsi Levenshtein dalam PHP apabila menyambung kepada MySQL, anda boleh melaksanakan kod berikut:
$sql = 'SELECT levenshtein(?, ?) AS distance'; $stmt = $conn->prepare($sql); $stmt->bind_param('ss', $str1, $str2); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { $distance = $row['distance']; }
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi Jarak Levenshtein dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!