ホームページ > データベース > mysql チュートリアル > MySQL で文字列の類似性パーセンテージを計算するにはどうすればよいですか?

MySQL で文字列の類似性パーセンテージを計算するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-30 17:59:09
オリジナル
220 人が閲覧しました

How to Calculate String Similarity Percentage in MySQL?

MySQL で文字列の類似性を計算する方法

問題:

MySQL には 2 つの文字列があり、それらの文字列を判別する必要があります。類似率。たとえば、文字列「@a = 'Welcome to Stack Overflow'」と「@b = 'Hello to stack overflow'」がある場合、それらの間の類似性を見つけたいとします。

解決策:

  1. レーベンシュタイン距離を作成する関数:

    次の関数を使用して、2 つの文字列間のレーベンシュタイン距離を計算します:

    CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    ログイン後にコピー

    上記の関数は、で提供されている関数から適応されています。 http://www.artfulsoftware.com/infotree/queries.php#552.

  2. レーベンシュタイン類似比関数を作成します:

    レーベンシュタイン距離を類似比に変換するには、これを使用します関数:

    CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    ログイン後にコピー

使用法:

2 つの文字列間の類似性パーセンテージを計算するには、次の式を使用します。

similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
ログイン後にコピー
  • LEVENSHTEIN(s1, s2): を計算します。 2 つの文字列間のレーベンシュタイン距離。
  • MAX_LENGTH: 2 つの文字列の最大長。

例:

SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
ログイン後にコピー

これクエリは 2 つの文字列間の類似性のパーセンテージを返します。この場合、それは次のようになります。 66%。

以上がMySQL で文字列の類似性パーセンテージを計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート