2017-04-26 1 views
0

Lucene에게 세그먼트를 순차적으로 그리고 고정 된 크기로 쓰라고 말할 수 있습니까? 이 방법으로 우리는 큰 세그먼트에 대해 무거운 머지를 피할 것입니다. Lucene은 doc 수나 파일 크기로 최대 세그먼트 크기를 설정할 수있는 기능을 제공하는 LogMergePolicy 클래스를 가지고 있지만 병합의 한도에 불과합니다.고정 크기의 순차적 세그먼트 화를 사용하여 Lucene에서 병합 해제

답변

0

NRTCachingDirectory을 사용하면 메모리에서 작은 세그먼트 병합을 수행하고 ~ 256MiB 정도가되면 디스크에만 기록 할 수 있습니다.

그러나 근본적으로 FST와 같은 데이터 구조는 1 회성 쓰기이고 새 데이터를 작성하여 수정되기 때문에 병합이 필요합니다.

FilesystemDirectory의 경우 NoMergePolicy과 결합 할 수 있습니다. 더 이상 병합을 수행하지 않습니다. 하지만 그것은 꽤 나쁜 쿼리 성능을 갖습니다.

는 어쩌면 이렇게 한 번에 모두 병합 수동으로 어떻게 든 병합 (설정 TieredMergePolicy.setMaxMergeAtOnceExplicit())

그러나 병합 단지 사업의 비용, 아마 더 익숙해하고 조정 MergePolicy하는 것입니다 귀하의 작업량.

+0

RAM에 세그먼트를 쓰는 것은 데이터 손실 가능성 때문에 나를위한 옵션이 아닙니다. 필자의 경우 데이터는 절대 변경되지 않는 로그이므로 병합을 피하면 성능이 향상됩니다. – cybersoft

관련 문제