용어 설명
- Lucene Segment 의 불변성 때문에 그 갯수가 계속 늘어나게 되는데, 무한정 늘어날 수는 없기 때문에 적당한 시점에 수행하는 병합 과정을 Lucene Merge 라고 한다
- 이 과정에서 삭제 플래그가 걸린 세그먼트 가 실제로 삭제된다
- 비용을 많이 먹는 작업이지만 이후에는 검색 성능이 나아진다 (한번의 IO 로 해결할 수 있으니까?)
- 뭐 Lucene 이 알아서 적당히 병합을 하는가 보지만,
ForceMerge
API 를 통해 명시적으로 병합을 수행할 수 있다- 다만, 이때에는 더이상의 추가적인 세그먼트가 생성되지 않을 것 같은 시점에 세그먼트를 병합하는 것이 좋다고 한다
- 크기가 큰 세그먼트가 있을 때 작은 세그먼트가 추가되면 자동 세그먼트 병합 대상 선정에서 영원히 누락될 수도 있기 때문이라고 한다
- 약간 자동 세그먼트 병합시에는 크기가 비슷한 것들끼리 묶어 모두 균등한 크기가 되도록 하는 모양인데 크기차이가 너무 나버리면 병합되지 않기 때문인듯
- 다만, 이때에는 더이상의 추가적인 세그먼트가 생성되지 않을 것 같은 시점에 세그먼트를 병합하는 것이 좋다고 한다