2014-09-05 4 views
1

제목에서 알 수 있듯이 Lucene.Net 대소 문자를 구분하지 않는 키워드 분석기가 필요합니다. 나는이 함께 왔어요 Lucene.Net 대소 문자를 구분하지 않는 키워드 분석기 ReusableTokenStream

... 위의 코드를 작동하는 것 같다 있지만

using Lucene.Net.Analysis; 

namespace LuceneTools 
{ 
    public sealed class LowerCaseKeywordAnalyzer :Analyzer 
    { 
    public override TokenStream TokenStream(System.String fieldName, System.IO.TextReader reader) 
    { 
     return new LowerCaseFilter(new KeywordTokenizer(reader)); 
    } 

    public override TokenStream ReusableTokenStream(System.String fieldName, System.IO.TextReader reader) 
    { 
     return new LowerCaseFilter(new KeywordTokenizer(reader)); 
    } 
    } 
} 

, 정말 내가 ReusableTokenStream 다르게 일을해야 이해하지? 위의 내용은 입니다.이긴하지만 어떻게/왜 또는 무엇을해야할지 모르겠습니다. 어쩌면 내가 그것을 오버라이드해서는 안되지만, 만약 내가하지 않는다면 그 경로를 사용하는 코드가 어떻게 될까?

답변

1

당신이 가지고있는 것은 실제로 ReusableTokenStream을 구현하지 않는 것과 같습니다.

public TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException { 
    return tokenStream(fieldName, reader); 
} 

그래서 당신의 구현이 기본 구현보다 더 아무것도되지 않습니다 여기에 Analyzer 소스 코드 (자바)입니다.

ReuseableTokenStream의 목적은 일반적으로 reset()에 마지막 스트림을 시도하여, 모두에게이 호출 할 때마다 다시 만들 필요하고, 실패 할 경우 tokenStream를 호출 간단하게 다시 떨어지는하지 않음으로써 성능을 개선하는 것입니다. 분명히 구현은 실제로 그렇게하지 않습니다.