是否有一个Lucene分析仪,用相同的短名称标记名称部分(例如Mike和Michael,Rich和Richard,Suzie和Susan)等等?
Levenshtein距离上的模糊匹配是我所知道的解决方案,并且一些实现者似乎将模糊匹配与soundex算法配对。当然有人在某处简单地列出了所有这些短名称?
编辑:这个问题中最棘手的部分是从哪里获取同义词数据?
答案 0 :(得分:5)
我不知道有任何具体的昵称过滤器。
如果您有数据源,SynonymFilter会使生成起来相当容易。这似乎是昵称数据的一个很好的来源:
https://code.google.com/p/nickname-and-diminutive-names-lookup/
您需要生成SynonymMap
以传递到SynonymFilter
ctor,它应该看起来像这样(我认为):
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();