3

名前の部分をそれに相当する短い名前 (たとえば、Mike と Michael、Rich と Richard、Suzie と Susan) などでトークン化する Lucene アナライザーはありますか?

レーベンシュタイン距離のあいまい一致は私が知っている解決策であり、一部の実装者はあいまい一致と soundex アルゴリズムを組み合わせているようです。確かに、誰かがこれらの短い名前のすべてをどこかに単純にリストするだけでスワイプしましたか?

編集: この質問の最も難しい部分は、同義語データをどこから取得するかです。

4

1 に答える 1

5

特定のニックネーム フィルターが存在することは認識していません。

SynonymFilterを使用すると、データ ソースがあればかなり簡単に生成できます。これは、ニックネーム データの適切なソースのようです。

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

SynonymMapctorに渡すには、次の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();
于 2013-03-05T23:03:28.980 に答える