lucene Stemmer について質問があります。lucene が語幹のある単語と語幹のない単語の両方を保持するのか、それとも語幹のある単語を語幹のない単語に置き換えるだけなのか疑問に思っていました。
たとえば、レコードに次のようなものがある場合: 「誰もが猫を愛している」は、「誰もが猫を愛している」または「誰もが猫を愛している」として索引付けされますか?
クエリとレコードの両方に同じ戦略がありますか?
通常、Stemmed バージョンのみが保持されます。つまり、あなたの例では、最終結果は「誰もが猫を愛している」または同様の組み合わせではなく、「誰もが猫を愛している」になります。
インデックス作成とクエリの両方で、同じステマーを使用する必要があります。のように、オリジナルを保持できるステミング フィルタがいくつかある場合がありますがSynonymFilter
、これを実行してステミングされていないクエリを実行すると、PhraseQueries が正しく機能しなくなる傾向があります (このトピックに関する SynonymFilter ドキュメントの注を参照してください)。ほとんどの一般的なステミング フィルター (つまり、 PorterStemFilter ) がその機能を提供するとは思いません。
何らかの理由でステム処理されていないデータを検索できるようにする必要がある場合は、その目的のために完全にステム処理されていない 2 番目のフィールドを保存することをお勧めします。