Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Fungsi Levenshtein dalam MySQL?
Cara Melaksanakan Fungsi Levenshtein dalam MySQL
Anda sedang mencari untuk memasukkan fungsi Levenshtein ke dalam pangkalan data MySQL anda untuk memudahkan perbandingan persamaan rentetan . Berikut ialah panduan langkah demi langkah tentang cara untuk mencapai ini:
Seperti yang dinyatakan, anda boleh memperoleh kod untuk fungsi jarak Levenshtein di sini. Sebaik sahaja anda mempunyai kod, teruskan dengan langkah berikut:
Buat sambungan ke pelayan MySQL anda menggunakan kaedah pilihan anda, seperti MySQL Workbench.
Jalankan pernyataan berikut untuk mencipta fungsi Levenshtein dalam pangkalan data MySQL anda:
CREATE FUNCTION levenshtein(a VARCHAR(255), b VARCHAR(255)) RETURNS SMALLINT DETERMINISTIC BEGIN DECLARE i, j, s VARCHAR(255), costs VARCHAR(255); DECLARE c, mina, minb, napi, napj, cost_a, cost_b, di, dj, new COSTTYPE[]; SET s = REPEAT(' ',LENGTH(b)+2); SET costs = REPEAT(' ',(LENGTH(b)+2) * (LENGTH(a)+2)); SET c = 1; WHILE c <= LENGTH(a) DO SET new = costs + 1; SET mina = c + 1; SET i = 1; WHILE i <= LENGTH(b) DO SET napj = costs + (i * 2) + 1; SET di = CHAR_LENGTH(SUBSTR(a,c,1)); SET dj = CHAR_LENGTH(SUBSTR(b,i,1)); SET napj = costs + (i * 2) + 2; IF di = dj AND di > 0 AND dj > 0 THEN IF di > 1 AND di < 127 AND dj > 1 AND dj < 127 AND (di-dj=-1 OR di-dj=1) AND SUBSTR(a,c,1) = SUBSTR(b,i,1) THEN SET napi = costs + 2; ELSE SET napi = costs + (i * 2) + 3; END IF; ELSE SET napi = costs + 2; END IF; SET cost_a = napj - mina; SET cost_b = napi - napj; SET mina = new + (i * 2) + 1; SET minb = napi + 1; IF cost_a < cost_b AND cost_a < mina THEN SET c = di + 1; SET costs = new; ELSEIF cost_b < mina THEN SET di = dj + 1; SET costs = new; ELSE SET mina = new + (i * 2) + 1; END IF; SET napj = mina; SET mina = napi; SET i = i + 1; END WHILE; SET c = c + 1; END WHILE; RETURN napj - mina; END;
Anda boleh mengesahkan bahawa fungsi telah berjaya dibuat dengan membuat pertanyaan untuk ia:
SHOW FUNCTION STATUS WHERE name = 'levenshtein'
Untuk menggunakan fungsi Levenshtein, rujuk sahaja dalam pertanyaan anda. Sebagai contoh, untuk mengira jarak Levenshtein antara rentetan 'abcde' dan 'abced', anda akan menggunakan pertanyaan berikut:
SELECT levenshtein('abcde', 'abced')
Pertanyaan ini akan mengembalikan hasil 2, menunjukkan jarak Levenshtein antara dua rentetan.
Untuk menggunakan fungsi Levenshtein dalam PHP, anda boleh melaksanakan pertanyaan MySQL daripada kod anda. Contohnya:
$mysqli = new mysqli('localhost', 'username', 'password', 'database'); $query = "SELECT levenshtein('abcde', 'abced')"; $result = $mysqli->query($query); while ($row = $result->fetch_assoc()) { echo $row['levenshtein']; }
Coretan kod ini menyambung ke pangkalan data MySQL, melaksanakan pertanyaan yang ditentukan dan mencetak jarak Levenshtein yang dikembalikan oleh pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi Levenshtein dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!