0

名前リストを検索して、一致する割合で関連する一致する名前を見つける必要があります。たとえば、次のような名前リストがある場合、

Ramu
Rahim
Raju
Ravan
Mustafa

Raheemのような名前を付けると、Rahimという名前が見つかり、次のような一致率が表示されます。

Given Input:Raheem
Output:
Name Rahim match with the name Raheem 70%

MySqlを使用して要件を満たすことはできますか?

注:mysqlで全文検索を試しましたが、その検索は文字ではなく単語のみと一致します

4

3 に答える 3

1

あなたの質問に直接答えることはできませんが、SoundexまたはMetaphoneを使用することをお勧めします。

Soundex は、英語で発音されるように、音で名前をインデックス化するための音声アルゴリズムです。

于 2012-03-20T07:14:14.733 に答える
0

文字列を比較するためのアルゴリズム、またはSQLクエリでそのようなアルゴリズムを使用する方法を求めていますか?

後者を要求する場合は、2つの入力文字列に基づいてパーセンテージを出力するユーザー定義関数を作成し、テーブル内のすべての文字列を選択して、パーセンテージが探しているしきい値を超えている場所をフィルタリングします。

だから次のようなもの:

SELECT name, MyFuzzyStringComparer(name, @nameInQuestion) percentage 
FROM nameTable 
WHERE percentage > @threshold 
ORDER BY percentage

比較アルゴリズムを探している場合は、上記の応答がそれをカバーしているようです。

于 2012-03-20T08:27:46.627 に答える
0

mysql 用の UDF があり、ここで見つけることができます: http://joshdrew.com/

[2004-02-06] - MySQL レーベンシュタイン距離 UDF

レーベンシュタイン距離を使用して、パーセント差を計算できます。

これは次のようになります。

(min(length('hello'), length('hollo')) - LevDist('hello', 'hollo')) / min(length('hello'), length('hollo'))

于 2012-03-20T07:42:39.267 に答える