トークンをそのように正規化するフィルターを教えてもらえますか?
L.A. Reid -> LA Reid
O'Callaghan -> OCallaghan
を検索するLA Reid
と一致しL.A. Reid
ます。
トークンをそのように正規化するフィルターを教えてもらえますか?
L.A. Reid -> LA Reid
O'Callaghan -> OCallaghan
を検索するLA Reid
と一致しL.A. Reid
ます。
StandardAnalyzer は、フィルターがトークンを結合する機会を得る前に句読点を削除するため、StandardAnalyzer の出力にフィルターを使用することはできません。
標準アナライザーを変更して、独自のアナライザーを作成できます。StandardAnalyzer は、JFlexを使用してトークナイザーを作成します。ソースの jflex ファイルはここにあります。試したことはありませんが、おそらくこの行を変更できます。
ALetter = ([\p{WB:ALetter}] | {ALetterSupp})
のようなものに、
ALetter = ([\p{WB:ALetter}] | {ALetterSupp} | "." | "'" )
jflex ファイル内のクラス名とパッケージ宣言も変更する必要があります。これを行った後、jflex を使用して新しいアナライザーを生成します。
アナライザーは のようなトークンを生成するため、トークンから特殊文字を取り除くTokenFilterL.A.
にアナライザーの出力を渡します。サンプル コードについては、 ISOLatin1AccentFilterを参照してください。