Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menambah Fungsi Jarak Levenshtein ke MySQL?

Bagaimana untuk Menambah Fungsi Jarak Levenshtein ke MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-09 16:08:15818semak imbas

How to Add a Levenshtein Distance Function to MySQL?

Menambah Fungsi Levenshtein pada MySQL

Pengenalan:

Mengira jarak Levenshtein, metrik untuk persamaan rentetan, ialah alat yang berharga dalam pelbagai aplikasi. Artikel ini membimbing anda melalui proses menambah fungsi Levenshtein pada MySQL, membolehkan anda menentukan persamaan antara rentetan dalam pertanyaan pangkalan data anda dengan mudah.

Menambah Fungsi:

Untuk menambah fungsi Levenshtein pada MySQL, ikuti ini langkah:

  1. Sambung ke MySQL: Wujudkan sambungan ke pelayan MySQL anda menggunakan alat seperti MySQL Workbench atau baris arahan.
  2. Jalankan SQL berikut pernyataan:

    CREATE FUNCTION levenshtein(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS INT
    DETERMINISTIC
    BEGIN
        DECLARE len1 INT;
        DECLARE len2 INT;
        DECLARE i INT;
        DECLARE j INT;
        DECLARE cost INT;
        DECLARE min1 INT;
        DECLARE min2 INT;
        DECLARE min3 INT;
    
        SET len1 = LENGTH(s1);
        SET len2 = LENGTH(s2);
    
        DECLARE matrix INT[][];
        SET matrix = NEW INT[len1 + 1][len2 + 1];
    
        FOR i = 0 TO len1 DO
            SET matrix[i][0] = i;
        END FOR;
    
        FOR j = 0 TO len2 DO
            SET matrix[0][j] = j;
        END FOR;
    
        FOR i = 1 TO len1 DO
            FOR j = 1 TO len2 DO
                IF s1[i] = s2[j] THEN
                    SET cost = 0;
                ELSE
                    SET cost = 1;
                END IF;
    
                SET min1 = matrix[i - 1][j] + 1;
                SET min2 = matrix[i][j - 1] + 1;
                SET min3 = matrix[i - 1][j - 1] + cost;
    
                IF min1 < min2 THEN
                    SET min2 = min1;
                END IF;
    
                IF min2 < min3 THEN
                    SET min3 = min2;
                END IF;
    
                SET matrix[i][j] = min3;
            END FOR;
        END FOR;
    
        RETURN matrix[len1][len2];
    END
  3. Sahkan Penciptaan Fungsi: Jalankan pertanyaan untuk memastikan fungsi telah berjaya ditambahkan:

    SELECT levenshtein('abcde', 'abced');

    Anda sepatutnya mendapat hasil yang dijangkakan daripada 2, menunjukkan jarak antara kedua-duanya rentetan.

Atas ialah kandungan terperinci Bagaimana untuk Menambah Fungsi Jarak Levenshtein ke MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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