0

MySQL テーブルの 1 つでショップ名を検索しようとしています。テーブルには fullname というフィールドがあります。今のところ、MySQL の SOUNDS LIKE メソッドを使用していますが、失敗した例を次に示します。

Banana's Shop という文字列があるとします。次に、「nana」または「bananas」のクエリで SOUNDS LIKE を使用しても、結果が得られません。これが私の現在のクエリです:

SELECT `fullName` FROM `shop` WHERE `fullName` SOUNDS LIKE 'nana';

タイプミスも一致するように、よりスマートなMySQLでこのような単純な検索を行うより良い方法はありますか?

4

1 に答える 1

0

によって使用される、古くてやや立派な SOUNDEX アルゴリズムは、SOUNDS LIKEサフィックス サウンドを処理しません。つまりnana、 に一致しないし、一致しませんbanana。ただし、 banani一致します。banana

2 つの発話は、音節の数が同じでない限り、必ずしも同じように聞こえるとは限りません。姓などの照合に適しています。Smith、Schmitt、および Schmidt はすべて同じ SOUNDEX 値を持ちます。

SOUNDEX を「スマート テキスト検索」と呼ぶのは大げさです。http://en.wikipedia.org/wiki/Soundex

検索できるMySQL FULLTEXT検索を検討することもできます。これにより、ある程度のフレーズ マッチングが行われます。つまり、列に「バナナ ショップ」と「バナナ スラッグ」がある場合、「バナナ」という単語は、これらの両方の値に一致する可能性があります。

FULLTEXT には注意してください。検索しているテーブルの行数が約 200 行未満の場合、直感に反して機能します。

しかし、これはタイプミスしやすい単語マッチャーではありません。あなたが求めていることは本当に簡単ではありません。

レーベンシュタイン アルゴリズム (調べることができます) を検討できます。でも、ちゃんと動くようになるのは毛玉です。

于 2013-10-11T00:32:09.390 に答える