ホームページ >データベース >mysql チュートリアル >MySQL でレーベンシュタイン距離を使用して文字列の類似性パーセンテージを計算するにはどうすればよいですか?
MySQL のようなデータベース管理システムでは、テキスト文字列の類似性を比較することが一般的な要件です。この記事では、MySQL 関数を使用して 2 つの文字列間の類似性のパーセンテージを計算する多用途のアプローチについて説明します。
レーベンシュタイン距離は、編集 (挿入) の数を測定するメトリックです。 、削除、または置換)は、ある文字列を別の文字列に変換するために必要です。類似性スコアが高いほど、文字列間の類似性が高いことを示します。
MySQL では、LEVENSHTEIN() 関数は 2 つの文字列間のレーベンシュタイン距離を計算します。類似性のパーセンテージを取得するには、次の式を使用できます。
Similarity Percentage = (1 - (Levenshtein Distance / Length of Longest String)) * 100
このアプローチを MySQL に実装するには、次の 2 つの関数を作成します:
レーベンシュタイン()関数:
CREATE FUNCTION `LEVENSHTEIN`(s1 TEXT, s2 TEXT) RETURNS INT(11) DETERMINISTIC BEGIN # ... Function implementation ... END;
LEVENSHTEIN_RATIO() 関数:
CREATE FUNCTION `LEVENSHTEIN_RATIO`(s1 TEXT, s2 TEXT) RETURNS INT(11) DETERMINISTIC BEGIN # ... Function implementation ... END;
質問に示されている例を考慮してください。
SET @a = "Welcome to Stack Overflow"; SET @b = "Hello to stack overflow";
類似度を計算するクエリ@a と @b の間のパーセンテージは次のようになります。
SELECT LEVENSHTEIN_RATIO(@a, @b) AS SimilarityPercentage;
このクエリは値 60 を返し、2 つの文字列間の類似性が 60% であることを示します。
以上がMySQL でレーベンシュタイン距離を使用して文字列の類似性パーセンテージを計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。