Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Fungsi Levenshtein dalam MySQL?

Bagaimana untuk Melaksanakan Fungsi Levenshtein dalam MySQL?

Barbara Streisand
Lepaskan: 2024-12-07 16:49:16
asal
1008 orang telah melayarinya

How to Implement the Levenshtein Function in 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:

  1. Sambung ke Pelayan MySQL Anda:

Buat sambungan ke pelayan MySQL anda menggunakan kaedah pilihan anda, seperti MySQL Workbench.

  1. Melaksanakan FUNGSI CREATE Pernyataan:

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;
Salin selepas log masuk
  1. Sahkan Penciptaan Fungsi:

Anda boleh mengesahkan bahawa fungsi telah berjaya dibuat dengan membuat pertanyaan untuk ia:

SHOW FUNCTION STATUS WHERE name = 'levenshtein'
Salin selepas log masuk
  1. Contoh Penggunaan:

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')
Salin selepas log masuk

Pertanyaan ini akan mengembalikan hasil 2, menunjukkan jarak Levenshtein antara dua rentetan.

  1. Menggunakan Fungsi dalam PHP:

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'];  
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan