【问题标题】:How to map À, Á, Â, Ã, Ä, Å to A for more efficient search? [duplicate]如何将 À, Á, Â, Ã, Ä, Å 映射到 A 以实现更高效的搜索? [复制]
【发布时间】:2013-09-27 23:02:51
【问题描述】:

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

我正在编写一个 Android 应用程序,它需要在某些字符上使用这些符号搜索一组字符串。

为了使搜索结果更强大,我想将 À, Á, Â, Ã, Ä, Å 映射到仅 A。例如,如果用户的查询是“测试”,则以下字符串应与查询匹配: Tȅst, Tȇst, Teśt 等。

在 API 级别 >= 8 的 Android 中是否有任何可能的方法?

【问题讨论】:

  • 您总是可以使用字符串替换将这些字符替换为 A。
  • 或者,使用认为它们都是等价的整理器。

标签: java android regex search


【解决方案1】:

Lucene 做这种事情。查看org.apache.lucene.analysis.icu.ICUNormalizer2Filter,了解用于搜索的文本规范化方法。

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

    • 简单但你确定你已经处理了所有可能的情况吗?
    • 如果您的方法确实适用于 OP,我会感到惊讶。查看其他答案和链接的问题以获得其他(更好的)解决方案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2011-07-30
    • 2020-06-13
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多