首頁 > 資料庫 > mysql教程 > 如何為 MySQL 新增編輯距離函數?

如何為 MySQL 新增編輯距離函數?

Susan Sarandon
發布: 2024-12-09 16:08:15
原創
753 人瀏覽過

How to Add a Levenshtein Distance Function to MySQL?

在MySQL 中加入Levenshtein 函數

簡介:

計算Levenshtein 距離(

計算Levenshtein 距離(與相似度相似度的度量)為相似度數各種應用中都是一個有價值的工具。本文將引導您完成將 Levenshtein 函數新增至 MySQL 的過程,讓您能夠輕鬆確定資料庫查詢中字串之間的相似性。

新增函數:

  1. 要將Levenshtein 函數加入MySQL,請依照下列步驟操作:
  2. 連接到🎜>連接到🎜>連接到🎜>連接到🎜>連接到🎜>連接到🎜>連接到🎜>連接到🎜>連接到🎜>連接到:
  3. 使用MySQL Workbench 或命令列等工具建立與MySQL 伺服器的連線。

    執行下列SQL 語句:
    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
    登入後複製
  4. 驗證函數建立查詢:執行查詢已成功新增:
    SELECT levenshtein('abcde', 'abced');
    登入後複製

    您應該得到預期結果2,表示兩個字串之間的距離。

以上是如何為 MySQL 新增編輯距離函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板