본문 바로가기

Lucene

[Lucene] IndexDeletionPolicy - lucene 4.2.1

이전에 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을 저장해두는 (스냅샷을 만드는) 기능을 제공합니다. 인덱스파일들이 백업이 되어있다면 특정 시점으로의 복구나 이런것들도 가능할것 같습니다.