あなたはフォローのように、java.text.Normalizer
を使用することができます。
import java.text.Normalizer;
import java.text.Normalizer.Form;
public static String removeAccents(String text) {
return text == null ? null :
Normalizer.normalize(text, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Normalizer
は、2つの文字(文字とアクセント)のセットに、元の文字を分割します。例えば、文字á
(U + 00E1)はa
に分割されます (U + 0061)とacute accent
U + 0301
\p{InCombiningDiacriticalMarks}+
正規表現は、このようなすべての分音コードが一致し、我々は空の文字列に置き換えます。
など、あなたのquery
は次のようになります。SQL Serverの
SELECT * FROM Table
WHERE Column Like '%stringwithoutaccents%' COLLATE Latin1_general_CI_AI
(10グラムから)ORACLE
SELECT * FROM Table
WHERE NLSSORT(Column, 'NLS_SORT = Latin_AI')
Like NLSSORT('%stringwithoutaccents%', 'NLS_SORT = Latin_AI')
CI「はアクセントを区別しないため "ケース小文字を区別しない" とAIの略
"
私はそれがあなたを助けてくれることを願っています。
あなたが使用しているDBはわかりませんが、mysqlは正規表現をサポートしています。 http://dev.mysql.com/doc/refman/5.7/en/regexp.html –
"検索エンジン"とは何ですか? – Andreas
http://stackoverflow.com/questions/8359595/the-most-efficient-way-to-implement-a-phonetic-search ご確認ください –