본문 바로가기

AttributeSource

Lucene 3.0 TokenStream과 AttributeSource. - 2 - 앞에서 AttributeSource에 Attribute들 (term, offset, position, type 등) set 해주면 그 뒤에 오는 Filter나 Tokenizer가 해당 Attribute를 사용 할 수 있다고 했습니다. 각각의 Filter와 Tokenizer는 모두 TokenStream을 상속하고 있고 이 TokenStream은 AttributeSource를 상속받고 있습니다. 이 Filter와 Tokenizer가 서로 데코레이터 패턴으로 물려있기 때문에 앞에서 set한 결과를 뒤에 따라오는 Filter와 Tokenizer가 사용 할 수 있는 것 입니다. (Java의 stream 관련 클래스들을 생각하시면 됩니다.) 소스를 보면 보통 맨 앞단에서 들어오는 String을 잘라내는 역할을 하는.. 더보기
Lucene 3.0 TokenStream과 AttributeSource. - 1 - 루씬이 버전업 되면서 바뀐 부분 중 하나가 이 부분인 것 같습니다. 이전에는 Tokenizer나 TokenFilter 클래스를 만들 때 TokenStream 클래스를 상속받아 만들고 이 TokenStream의 next 메서드를 사용해서 얻어지는 Token을 가지고 데코레이터 패턴으로 적용 된 Filter들이 Token을 처리하는 방식이었습니다. 예를 들어서, Analyzer의 tokenStream 메서드가 위와 같이 정의되어 있다고 하고 분석해야 할 문장이 "검색엔진 개발자" 라고 했을 때 추출 되는 Token을 얻어내기 위해서 next 메서드를 실행했었습니다. 즉, 대략 위와 같은 방식이었죠. next 메서드가 실행 되면 제일 상위의 Tokenizer에서 "검색엔진,(0,4)" 라는 Token을 만들어.. 더보기