处理Umlaut字符的不同非重音版本

时间:2010-06-25 12:25:40

标签: internationalization lucene lucene.net diacritics

德语重音的Umlaut字符“ö”,“ä”和“ü”在用户输入时经常被替换为非重音版本,通常是为了方便他们没有正确的键盘。

对于大多数重音字符,大多数人都使用特定的非重音版本。例如,带有重音的“è”总是被标准的“e”取代。

对于Umlaut字符,我们的英国人和我们的美国用户采用的惯例之间似乎存在差异。

英国用户将分别用“o”,“a”和“u”替换它们,其中...... 美国用户将分别用“oe”,“ae”和“ue”替换它们。

我们的搜索建立在Lucene.Net之上,与任何搜索框架一样,用于匹配重音字符的所有组合的技术是在创建索引和提供搜索条件时替换它们,因此允许使用纯粹的非重音字符进行匹配。

如何解析重音字符以支持以下内容...

德国客户类型 - “Götz”
英国客户类型 - “Gotz”
美国客户输入“Goetz”

鉴于该名称在我们的数据库中的格式正确为“Götz”,那么我将如何解析“Götz”以便所有三个用户都可以在索引中找到它?

修改

我在CodeProject上发现这篇文章正是我所寻找的。该示例显示了如何将单词的同义词添加到Lucene索引中,以便它们与原始单词匹配。通过一个小小的改编,我能够做到我想要的。

2 个答案:

答案 0 :(得分:2)

在索引时将“Götz”转换为“Gotz”和“Goetz”。您可以在第二个字词上使用setPositionIncrement(0)来使短语搜索正常工作。

答案 1 :(得分:0)

我在CodeProject上发现这篇文章正是我所寻找的。该示例显示了如何将单词的同义词添加到Lucene索引中,以便它们与原始单词匹配。通过一个小小的改编,我能够做到我想要的。