Werfen Sie einen Blick auf die Quelle. Im Allgemeinen sind Analysatoren ziemlich lesbar. Sie müssen nur in CreateComponents
Methode suchen die Tokenizer und Filter zu sehen, indem es verwendet wird:
@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);
}
Während, ist StandardAnalyzer
ein StandardTokenizer
, nur StandardFilter
, LowercaseFilter
und StopFilter
. EnglishAnalyzer
Rollen in einem EnglishPossesiveFilter
, KeywordMarkerFilter
und PorterStemFilter
.
Hauptsächlich rollt der EnglishAnalyzer in einigen englischen stemming Verbesserungen, die gut für einfachen englischen Text funktionieren sollten.
Für StandardAnalyzer, wirklich die einzige Annahme, die ich weiß, dass es direkt an Englisch-Analyse bindet, ist das Standard-Stoppwort festgelegt, das ist natürlich nur ein Standard und kann geändert werden. StandardAnalyzer implementiert jetzt Unicode Standard Annex #29, die versucht, eine nicht sprachspezifische Textsegmentierung bereitzustellen.