【问题标题】:Lucene analyzer for first nameLucene 分析器的名字
【发布时间】:2013-02-20 10:31:33
【问题描述】:

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

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

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

【问题讨论】:

  • 美国人口普查局在他们的网站上提供了一些关于英文名称的信息(但不能保证他们有这些信息,而且需要一些谷歌搜索才能找到)。
  • 这有一些想法,但名字很不常见:answers.google.com/answers/threadview/id/778986.html

标签: search solr lucene elasticsearch


【解决方案1】:

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

如果您有数据源,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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-25
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多