ホームページ >データベース >mysql チュートリアル >MySQL にレーベンシュタイン距離関数を追加するにはどうすればよいですか?

MySQL にレーベンシュタイン距離関数を追加するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-09 16:08:15765ブラウズ

How to Add a Levenshtein Distance Function to MySQL?

MySQL へのレーベンシュタイン関数の追加

概要:

文字列の類似性のメトリックであるレーベンシュタイン距離の計算は次のとおりです。さまざまな用途で役立つツールです。この記事では、MySQL に Levenshtein 関数を追加するプロセスを説明します。これにより、データベース クエリ内の文字列間の類似性を簡単に判断できるようになります。

関数の追加:

Levenshtein 関数を MySQL に追加するには、次の手順に従います。手順:

  1. MySQL への接続: MySQL Workbench などのツールまたはコマンド ラインを使用して、MySQL サーバーへの接続を確立します。
  2. 次の 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
  3. 関数作成の検証: 関数が正常に追加されたことを確認するクエリを実行します:

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

    2 つの間の距離を示す、期待される結果 2 が得られるはずです。文字列。

以上がMySQL にレーベンシュタイン距離関数を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。