lucene の tokenfilters の順序について質問があります。たとえば、次のフィルターが必要な場合、lucene がこれらのフィルターを使用する順序は何ですか?
1- LowerCaseFilter 猫 => 猫
2- 猫のトリムフィルター!=>猫
3-猫のStopFilter =>猫
4-LengthFilter
5-ステマーフィルター
6- シノニムフィルター
このシーケンスを説明するドキュメントは見つかりませんでした。
フィルターの順序は、必要に応じて異なります。しかし、あなたの注文は合理的なようです。
注意してください、私はTrimFilter
あなたが指定したことをするとは思わない. TrimFilter
句読点ではなく、トークンから空白を削除します。ほとんどのトークナイザーは、このフィルターを不要にします。
TrimFilter と LowerCaseFilter は一般に早い段階で使用されるため、単語の内容を操作するフィルターは大文字と小文字の区別や空白を処理する必要がありません。
StopFilter と LengthFilter は同様に機能します。通常、ステミングの前にこれらを使用します。通常、StopFilter によって削除される単語は非常に原子的であるため、Stemmer の前に単語を適用することは理にかなっています。ステマーの後にこれらのフィルターを適用すると、意図していなかった意味のある語幹が失われる可能性があります。StopFilter をステミングされた単語で動作させたい場合は、もちろん Stemmer の後に来る必要があります。
SynonymFilter が Stemmer の後に来るかどうかは、ニーズによって異なります。通常、Stemmer に続く SynonymFilter の方が便利ですが、語幹形式を使用してシノニムを定義する必要があります。