フランス語テキストのLucene検索を実装しています。ユーザーがアクセントを入力したかどうかにかかわらず、検索は機能しなければならず、ステミングもサポートする必要があります。私は現在、Lucene 3のSnowballベースのフランスのstemmerを使用しています。Lucene:フランス語のASCIIフォールディングとステミングを組み合わせる
インデクシング側で、私はASCIIFoldingFilter
をアナライザに追加しました。
しかし、検索側では、操作は元に戻せません。ステムマーは入力内容にアクセントが含まれている場合にのみ機能します。たとえば、ité
はuniversité
の末尾にありますが、ユーザー検索入力がuniversite
の場合、ステマーはクエリ分析中にuniversit
を返します。もちろん、インデックスには用語univers
が含まれているため、universit
の検索結果は返されません。
解決策は、分析中のステミングおよびフォールディングの順序を変更することであるように思われます。スタミンティングおよびフォールディングの代わりに、スタミンティングの前にフォールディングを実行します。これは効果的に操作を可逆的にするが、多くの単語がもはや語幹規則に適合しないので、語幹を著しく邪魔する。あるいは、ステムマーは折り畳まれた入力で動作するように、すなわちアクセントを無視するように変更することができるが、これにより過剰なステミングが生じる可能性があるか?
ステミングアルゴリズムの動作を変更せずに効果的に折り畳まれた検索を行う方法はありますか?