0

エンジンMyISAMを実行している「customers1」という名前のMySQLテーブルがあります。名前、住所、郵便番号の列に全文索引を作成しました。そのテーブルの顧客の 1 人が私です。私は自分の名前を「Gildebrand」と綴ります。現在、ユーザーが私の名前を正しく綴ることは期待できません。多くの人は「Glidebrant」と書くかもしれませんが、それでも私の名前を見つけたいと思っています。SQLでその検索を行うにはどうすればよいですか?

今すぐ次のクエリを実行すると

SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('Gildebrand')

もちろん、それは私を見つけます。しかし、「Glidebrand」のスペルを間違えると、見つかりません。これに対する最善のアプローチは何ですか?

4

2 に答える 2

2

http://www.w3resource.com/mysql/string-functions/mysql-soundex-function.phpを使用する場合、そのような結果から得ることができる最も近いと思いますSOUNDEX()

于 2012-05-17T19:05:43.123 に答える
1

あなたに似た一般的な検索があります。基本的に私がしていることは次のとおりです。

SELECT * FROM customers1 WHERE MATCH(name,adress,zip) AGAINST('?')
UNION
SELECT * FROM customers1 WHERE name LIKE ('?%')

これにより、ユーザーはプレフィックスを入力することもできます。

ユーザーがあなたの名前を綴ることができないことに気付いたが、それが で始まることは確かである場合、ユーザーはそれを入力することができますGil

他の列でもプレフィックスをサポートする場合は、UNION 句を追加できます。

于 2012-05-17T19:55:25.287 に答える