2013-03-05 77 views
2

是否有一个Lucene分析器在那里标记名称部分与它们的短名称等价物(例如Mike和Michael,Rich and Richard,Suzie和Susan)等?Lucene分析器的名字

Levenshtein距离上的模糊匹配是我所知道的解决方案,有些实现者似乎将模糊匹配与soundex算法配对。当然有人在某处简单地列出了所有这些短名称,这已经很轻松了吗?

编辑:这个问题最难的部分是从哪里得到同义词数据?

+0

美国人口普查局在他们的网站上有关于英文名称的一些信息(不保证他们有这个,但它需要一些Google搜索)。 – 2013-03-05 20:45:00

+0

这有一些想法,虽然很罕见的名字:http://answers.google.com/answers/threadview/id/778986.html – jkschneider 2013-03-05 20:51:12

回答

4

我不知道有任何特定的昵称过滤器。

A SynonymFilter虽然可以很容易地生成,但如果您有数据源的话。这似乎是绰号数据的良好来源:

https://code.google.com/p/nickname-and-diminutive-names-lookup/

您将需要生成SynonymMap通入SynonymFilter构造函数,它应该是这个样子(我认为):

SynonymMap.Builder builder = new SynonymMap.Builder(true); 
builder.add(new CharsRef("Mike"), new CharsRef("Michael"), false); 
builder.add(new CharsRef("Rich"), new CharsRef("Richard"), false); 
builder.add(new CharsRef("Suzie"), new CharsRef("Susan"), false); 
SynonymMap map = builder.build(); 
+1

添加了一个良好的昵称来源的链接... – jkschneider 2013-03-07 20:40:56