Lucene은 증분 색인 ( incremental indexing)을 지원한다.
incremental indexing을 하기 위해서는 기존의 인덱스와 새로 추가하는 문서들의
인덱스를 합치는 작업을 해야하는데 이때 MergePolicy 클래스에서 이러한
작업들의 기본 설정을 관리하게 되며 3.0.1 버전을 기준으로 봤을때
대략 다음과 같이 3개의 Policy 클래스가 있다.
1. LogByteSizeMergePolicy
2. LogDocMergePolicy
3. LogMergePolicy
Lucene에서는 LogByteSizeMergePolicy를 기본설정으로 사용하고 있다.
$LUENE_HOME/src/java/org/apache/lucene/index 폴더에서 이러한 Policy 클래스
가 들어있고 IndexWriter.java의 소스를 보면 이러한 정책들이 셋팅되어 있는
것을 확인할수 있다.
LogByteMergePolicy의 알고리즘은
http://nlp.stanford.edu/IR-book/html/htmledition/dynamic-indexing-1.html에 잘 나와있다.
http://blog.mikemccandless.com/2011/02/visualizing-lucenes-segment-merges.html
위의 블로그에 가보면 블로그 저자가 TieredMergePolicy라는 새로운 policy를
만들고 LUCENE-854 patch로 만들었다고 하는데 lucene-3.3.0 버전에는
TieredMergePolicy가 포함되어 있다.
댓글 없음:
댓글 쓰기