ソースを見てみましょう。一般に、アナライザーはかなり読みやすいです。CreateComponents
メソッドを調べて、トークナイザーとフィルターが使用されていることを確認するだけです。
@Override
protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
final Tokenizer source = new StandardTokenizer(matchVersion, reader);
TokenStream result = new StandardFilter(matchVersion, source);
// prior to this we get the classic behavior, standardfilter does it for us.
if (matchVersion.onOrAfter(Version.LUCENE_31))
result = new EnglishPossessiveFilter(matchVersion, result);
result = new LowerCaseFilter(matchVersion, result);
result = new StopFilter(matchVersion, result, stopwords);
if(!stemExclusionSet.isEmpty())
result = new KeywordMarkerFilter(result, stemExclusionSet);
result = new PorterStemFilter(result);
return new TokenStreamComponents(source, result);
}
一方、StandardAnalyzer
はStandardTokenizer
、StandardFilter
、LowercaseFilter
、およびStopFilter
です。 、、およびEnglishAnalyzer
でロールします。EnglishPossesiveFilter
KeywordMarkerFilter
PorterStemFilter
主に、EnglishAnalyzer には英語のステミング機能が強化されており、プレーンな英語のテキストでうまく機能するはずです。
StandardAnalyzer の場合、英語の分析に直接結びついていると私が認識している唯一の仮定は、デフォルトのストップワード セットです。もちろん、これは単なるデフォルトであり、変更することができます。StandardAnalyzer は、非言語固有のテキスト セグメンテーションを提供しようとするUnicode Standard Annex #29を実装するようになりました。