2011-02-11 6 views
1

두 개의 다른 분석기로 lucene 문서를 인덱싱해도 괜찮습니까? 마치 대소 문자를 구분하거나 대소 문자를 구분하지 않는 검색을 지원해야합니다. 따라서 동일한 문서에 대해 두 개의 분석기를 사용할 수 있는지 궁금합니다. 다른 분석기로 lucene 문서 인덱싱

writer.addDocument(doc,new StandardAnalyzer(Version.LUCENE_30)); writer.addDocument(doc,new custom_analyser);

나는 표준 분석기 소문자 필터를 제외 않는 모든 필터를 지원하는 사용자 정의 분석기를 가질 계획입니다. 색인에서 결과를 검색하려고 시도 할 때 중복되는 결과가 발생할 수 있습니다.

의견이나 제안이 있으십니까?

편집 : @ 사이먼

Analyzer defaultAnalyzer = new StandardAnalyzer(Version.LUCENE_30); 
PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(defaultAnalyzer); 
wrapper.addAnalyzer("CaseSensitiveContents", new WhitespaceAnalyzer()); 

writer = new IndexWriter(FSDirectory.open(index), wrapper, true, 
         new IndexWriter.MaxFieldLength(100)) 

doc.add(new Field("contents", parser.getReader(), TermVector.YES)); 
doc.add(new Field("CaseSensitiveContents", parser.getReader(), TermVector.YES)); 
writer.add(doc) 

답변

2

색인에 (자신의 케이스 제외)이 개 거의 동일 문서를 추가 할 귀하의 예제 코드.

하나의 문서에 두 개의 필드를 추가하는 것은 어떻습니까? 하나는 대소 문자를 구분합니까, 하나는 그렇지 않습니까? 이 경우 PerFieldAnalyzer을 사용할 수 있습니다.

+0

@ 사이먼, 두 개의 서로 다른 필드에 동일한 내용을 추가하려고하면 스트림이 예외로 처리됩니다 ... 어떻게 수정합니까? – remo

+0

동일한 토큰 스트림을 두 번 추가하는 것 같습니다. 순수 문자열로 작업 할 때이 오류를 본 적이 없습니다. 이 코드를 디버깅하려면 코드가 필요합니다. Fieldable (일반적으로 Field)을 추가하는 위치를 선호합니다. – sisve

+0

여기 내 코드의 일부를 여기에 추가했습니다 – remo