3

トークンをそのように正規化するフィルターを教えてもらえますか?

L.A. Reid -> LA Reid
O'Callaghan -> OCallaghan

を検索するLA Reidと一致しL.A. Reidます。

4

1 に答える 1

1

StandardAnalyzer は、フィルターがトークンを結合する機会を得る前に句読点を削除するため、StandardAnalyzer の出力にフィルターを使用することはできません。

標準アナライザーを変更して、独自のアナライザーを作成できます。StandardAnalyzer は、JFlexを使用してトークナイザーを作成します。ソースの jflex ファイルはここにあります。試したことはありませんが、おそらくこの行を変更できます。

ALetter = ([\p{WB:ALetter}] | {ALetterSupp})

のようなものに、

ALetter = ([\p{WB:ALetter}] | {ALetterSupp} | "." | "'" )

jflex ファイル内のクラス名とパッケージ宣言も変更する必要があります。これを行った後、jflex を使用して新しいアナライザーを生成します。

アナライザーは のようなトークンを生成するため、トークンから特殊文字を取り除くTokenFilterL.A.にアナライザーの出力を渡します。サンプル コードについては、 ISOLatin1AccentFilterを参照してください。

于 2012-06-13T04:50:01.650 に答える