如何将À、Á、Â、Ã、Ä、Å映射为A以提高搜索效率?

4
如何将 À、Á、Â、Ã、Ä、Å 映射为 A 以便更高效地搜索?
我正在编写一个 Android 应用程序,需要在一些字符上搜索一组带有这些符号的字符串。
为了使搜索结果更强大,我想将 À、Á、Â、Ã、Ä、Å 映射为 A。例如,如果用户的查询是“Test”,则以下字符串应与查询匹配:Tȅst、Tȇst、Teśt 等。
在 Android API 级别 >= 8 中,是否有可能做到这一点?

你可以使用字符串替换将那些字符替换为A。 - developerwjk
或者,使用一个将它们视为等效的Collator。 - cHao
2个回答

3

Lucene可以实现这样的功能。查看org.apache.lucene.analysis.icu.ICUNormalizer2Filter,了解搜索文本归一化的方法。


1
String text = "Your SeÅrchable Text";
String searchMe = text.replaceAll("[ÀÁÂÃÄÅ]", "A");

我只需在可搜索版本的主字符串中替换它们。非常简单!如果有多种情况(比如奇怪的“E”字符),只需再进行一次replaceAll:
searchMe = searchMe.replaceAll("[EEEEEE]", "E"); //(note: those are the weird Es in there)

2
简单,但你确定你已经处理了所有可能的情况吗? - Stephen C
如果你的方法能够解决OP的问题,我会感到惊讶。看看其他答案和相关问题,可能有更好的解决方案。 - Stephen C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接