Hãy xem nguồn. Nói chung, các máy phân tích khá dễ đọc. Bạn chỉ cần nhìn vào CreateComponents
phương pháp để xem Tokenizer và bộ lọc được sử dụng bởi nó:
@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);
}
Trong khi đó, StandardAnalyzer
chỉ là một StandardTokenizer
, StandardFilter
, LowercaseFilter
và StopFilter
. EnglishAnalyzer
cuộn trong một số EnglishPossesiveFilter
, KeywordMarkerFilter
và PorterStemFilter
.
Chủ yếu, EnglishAnalyzer cuộn trong một số cải tiến bắt nguồn từ tiếng Anh, sẽ hoạt động tốt cho văn bản tiếng Anh thuần tuý.
Đối với StandardAnalyzer, thực sự giả định duy nhất tôi biết là liên kết trực tiếp với phân tích tiếng Anh, là bộ từ khóa mặc định, tất nhiên chỉ là mặc định và có thể thay đổi. StandardAnalyzer hiện đang triển khai Unicode Standard Annex #29, cố gắng cung cấp phân đoạn văn bản không theo ngôn ngữ cụ thể.