【发布时间】:2013-11-16 13:48:38
【问题描述】:
我正在创建一个搜索实用程序,它将搜索 SQLITE DB 中的元素,唯一的问题是,该 DB 包含一些字符,如 Å è ô,它们是拉丁语......
有没有一种简单的方法可以忽略这些字母并将它们视为英文字母对应物(Å = A,è = e ...)?
我想设计所有此类字符的一对一映射,例如,
HashMap<Character, Character> lstOfChar = new HashMap<Character, Character>();
lstOfChar.put('Å', 'A');
lstOfChar.put('è', 'e');
当从数据库中检索数据时,每个这样的字符都将被替换为等效的英文字母,并显示搜索结果。
如果我正在搜索
Deepak,则应搜索包含DeepÅk或DÈepak或deepÃk的行
但这将是一个漫长的过程,维护也很困难。
是否有一些优雅的方式,可能是 SQLITE 提供了一些功能,或者可以通过SQL。
我正在使用Java 平台。
编辑我发现Normalizer in posted answer 确实有助于在获取结果后以编程方式执行此操作,但这可以通过database 或通过以某种特殊方式触发SQL 来完成,如获取结果并应用此函数并返回结果需要大量时间。
【问题讨论】:
-
为什么要去掉非ASCII字符?如果您将它们替换,您还可能会更改单词的含义。
-
我没有更改数据库中的实际值,而是获取结果然后在 UI 上显示它们,我只想搜索