2013-06-09 34 views
5

Tôi đang làm việc để lập chỉ mục các mẩu tin bằng tiếng Anh sử dụng Lucene 4.3, tuy nhiên tôi không chắc chắn nên sử dụng Trình phân tích nào. Sự khác nhau giữa Lucene StandardAnalyzer và EnglishAnalyzer là gì?Sự khác nhau giữa Lucene StandardAnalyzer và EnglishAnalyzer là gì?

Ngoài ra, tôi đã thử kiểm tra StandardAnalyzer với văn bản này: "XY & Z Corporation - [email protected]". Đầu ra là: [xy] [z] [tổng công ty] [xyz] [example.com], tuy nhiên tôi nghĩ đầu ra sẽ là: [XY & Z] [Tổng công ty] [[email protected]]

Am Tôi làm gì sai?

Trả lời

5

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, LowercaseFilterStopFilter. EnglishAnalyzer cuộn trong một số EnglishPossesiveFilter, KeywordMarkerFilterPorterStemFilter.

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ể.

Các vấn đề liên quan