ホームページ >データベース >mysql チュートリアル >MySQL にレーベンシュタイン距離関数を追加するにはどうすればよいですか?
概要:
文字列の類似性のメトリックであるレーベンシュタイン距離の計算は次のとおりです。さまざまな用途で役立つツールです。この記事では、MySQL に Levenshtein 関数を追加するプロセスを説明します。これにより、データベース クエリ内の文字列間の類似性を簡単に判断できるようになります。
関数の追加:
Levenshtein 関数を 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
関数作成の検証: 関数が正常に追加されたことを確認するクエリを実行します:
SELECT levenshtein('abcde', 'abced');
2 つの間の距離を示す、期待される結果 2 が得られるはずです。文字列。
以上がMySQL にレーベンシュタイン距離関数を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。