3

这个问题是指在索引中存储本地名称的国际字符的规范化。我想一般性地讨论这个问题,也想听听 Java 中可能存在的解决方案(类/库)。


在全局应用程序中,用户输入自己的姓名,应用程序将每个姓名写入搜索索引,以便其他用户可以搜索姓名并找到用户。在英语中微不足道,但在许多其他语言和/或全球范围内并不那么微不足道,因为特定字母需要音译和/或可以以多种形式书写。例如,德国名字 Häußler 可以写成

  • 豪斯勒(德国)
  • Haeussler(德国,国际音译)
  • 豪斯勒(瑞士)
  • 豪斯勒(英文音译)

Java有

    Normalizer.normalize(entry, Normalizer.Form.NFD) // NFC

类,但这似乎在很多情况下都不起作用和/或我不知道如何正确使用它。很好的阅读也在这里http://en.wikipedia.org/wiki/Unicode_equivalence但我找不到足够的关于这个主题的捆绑信息。

有人知道现有的开源项目已经有人解决了这个问题吗?有什么可以使用的库吗?网站?

您是如何将日本人、中国人、阿拉伯人等人的语言音译成英语的?像 Facebook 这样的大型社交网络如何音译他们的用户名,以确保他们可以在国际上找到?

4

1 回答 1

1

您走在正确的轨道上——您可能想要添加的一个搜索词是“规范”。

我相信ICU 项目是处理这个问题的最强大的开源软件。对规范化组件特别感兴趣,特别是 NFKC_Casefold 的实现,它处理德语 ß 示例等。

于 2014-11-01T02:43:46.097 回答