問題:
MySQL には 2 つの文字列があり、それらの文字列を判別する必要があります。類似率。たとえば、文字列「@a = 'Welcome to Stack Overflow'」と「@b = 'Hello to stack overflow'」がある場合、それらの間の類似性を見つけたいとします。
解決策:
レーベンシュタイン距離を作成する関数:
次の関数を使用して、2 つの文字列間のレーベンシュタイン距離を計算します:
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC BEGIN ... END
上記の関数は、で提供されている関数から適応されています。 http://www.artfulsoftware.com/infotree/queries.php#552.
レーベンシュタイン類似比関数を作成します:
レーベンシュタイン距離を類似比に変換するには、これを使用します関数:
CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11) DETERMINISTIC BEGIN ... END
使用法:
2 つの文字列間の類似性パーセンテージを計算するには、次の式を使用します。
similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
例:
SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
これクエリは 2 つの文字列間の類似性のパーセンテージを返します。この場合、それは次のようになります。 66%。
以上がMySQL で文字列の類似性パーセンテージを計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。