3

是否有一个 Lucene 分析器可以用它们的短名称等价物(例如 Mike 和 Michael、Rich 和 Richard、Suzie 和 Susan)等来标记名称部分?

Levenshtein 距离的模糊匹配是我知道的一个解决方案,一些实现者似乎将模糊匹配与 soundex 算法配对。肯定有人轻描淡写地在某处简单地列出所有这些短名称?

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

4

1 回答 1

5

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

但是,如果您有数据源, SynonymFilter将使其相当容易生成。这似乎是昵称数据的一个很好的来源:

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

您需要生成SynonymMap传递给 ctor 的SynonymFilterctor,它应该看起来像这样(我认为):

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();
于 2013-03-05T23:03:28.980 回答