Lucene

[Lucene] IndexDeletionPolicy - lucene 4.2.1

용식 2013. 5. 7. 16:06

이전에 IndexCommit에 대해서 잠깐 확인을 해보았었는데요..

이번에는 IndexDeletionPolicy에 대해서 확인해보려고 합니다.


기본적으로 제공되는 IndexDeletionPolicy의 구현 클래스로는 

KeepOnlyLastCommitDeletionPolicy와 SnapShotDeletionPolicy가 있습니다.

KeepOnlyLastCommitDeletionPolicy가 기본이구요.


commit을 할때마다 commit의 정보를 가지고있는 IndexCommit 객체가 생성되는데 이 IndexCommit을

어떻게 할것이냐의 정책이라고 보시면 좋을 것 같습니다.


우선 기본적인 IndexDeletionPolicy에서 제공되는 메서드가 2개가 있습니다. 하나는, onInit 메서드 하나는 onCommit 메서드입니다. KeepOnlyLastCommitDeletionPolicy에서는 oninit 메서드에서는 commit list가 commit 할때마다 넘어오게되고 

이를 onCommit 메서드로 넘겨서 제일 마지막 Commit남 남기고 삭제하도록 되어있습니다. 



위 예가 그것을 보여주고 있는데요, 로깅을 추가하기위해서 MyPolicy라고 내부 클래스를 하나 만들어서 적용해보았습니다. 로직은 KeepOnlyLastCommitDeletionPolicy와 동일합니다.



이런형태로 IndexDeletionPolicy를 상속하면 commit시의 행동을 결정 할 수도 있습니다.

이를 이용해서 replication도 적용이 가능하겠구요.. 백업도 가능하겠구요...


두번째는 SnapShotDeletionPolicy인데요, 이것은 사용자가 key로 현재의 IndexCommit을 저장해두는 (스냅샷을 만드는) 기능을 제공합니다. 인덱스파일들이 백업이 되어있다면 특정 시점으로의 복구나 이런것들도 가능할것 같습니다.