2014-12-29 2 views
1

lucene 4.10.2를 사용하여 612 개의 레코드를 색인하려고합니다. 인덱스 디렉토리에 많은 CFS 파일을 생성합니다. 약 626 개의 CFS 파일이 생성됩니다. 색인을 생성하는 데 더 많은 시간이 소요됩니다. 모든 CFS 파일은 최대 3kb입니다.lucene에서 여러 개의 CFS 파일이 생성되었습니다. 4.10.2

ENV : 자바 8, 윈도우 7

Directory dir = FSDirectory.open(file); 
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_10_2, new ClassicAnalyzer()); 
if(bufferSizeMB != 0 && bufferSizeMB != -1){ 
    config.setRAMBufferSizeMB(bufferSizeMB); 
} else { 
    config.setRAMBufferSizeMB(DEFAULT_RAM_BUFFER_SIZE_MB); 
}  
config.setMaxBufferedDocs(1000); 
config.setMaxBufferedDeleteTerms(1000); 
config.setMergePolicy(new LogDocMergePolicy()); 
IndexWriter iwriter = new IndexWriter(dir, config); 
iwriter.getConfig().setMaxBufferedDeleteTerms(1000); 
iwriter.getConfig().setMaxBufferedDocs(1000); 
iwriter.getConfig().setRAMBufferSizeMB(bufferSizeMB) 
change 문서에서

http://lucene.472066.n3.nabble.com/Multiple-CFS-files-are-generated-in-lucene-4-10-2-td4176336.html

+0

질문에 대한 업데이트가 있습니까? 검색어를 삭제 한 다른 해결책이나 다른 것을 찾았습니까? –

답변

0

, 분절 플러시

LUCENE-4462: DocumentsWriter now flushes deletes, segment infos and builds 
    CFS files if necessary during segment flush and not during publishing. The latter 
    was a single threaded process while now all IO and CPU heavy computation is done 
    concurrently in DocumentsWriterPerThread. 

이 병합이 병합 정책에 따라 트리거 . 인덱스가 제대로 끝나고 라이터가 닫히면 이상적인 cfs 파일 하나만 남아 있어야합니다.

내 응용 프로그램에서 관찰 한 것. 주석에 응답

업데이트

최근 4.10.2에 2.X에서 마이그레이션.

색인 작성자의 견적서 4.10.2 documentation.

Commits all pending changes (added & deleted documents, segment merges, added indexes, 
etc.) to the index, and syncs all referenced index files, such that a reader will see 
the changes and the index updates will survive an OS or machine crash or power loss. 
Note that this does not wait for any running background merges to finish. This may 
be a costly operation, so you should test the cost in your application and do it only 
when really necessary. 

대신 할 일은 하나의 색인 작성기를 사용하고 매번 커밋을 호출하지 않고이를 사용하여 모든 레코드를 추가하는 것입니다. 마지막으로 모든 레코드가 추가되면 indexwriter.close()을 호출하면 병합 및 커밋 프로세스가 처리됩니다.

+0

안녕하세요, Sumeet, 고맙습니다. 우리는 Lucene 2.4를 4.10으로 마이그레이션합니다. 2.4에서 612 개의 레코드를 실행할 때 10 분이 걸리고 로컬 시스템에 10 개의 CFS 파일이 생성되었습니다. 4.10에서 612 개의 레코드가 1 시간 걸렸으며 626 개의 CFS 파일이 생성되었습니다. 두 경우 모두 각 레코드에 대해 커밋을 호출합니다. 제 질문은 2.4에서 각 커밋에 대해 기존 CFS 파일을 업데이트하고 4.10에서는 새로운 CFS를 만듭니다. 우리는 더 많은 시간이 걸리기 때문에 이것을 생각하고 있습니다. 이것을 피하는 방법. 위의 글에서 스크린 샷이 게시 된 링크를 찾을 수 있습니다. –

+0

@jaga check 내 대답을 업데이트했습니다. –

관련 문제