2017-09-18 6 views
0

나는 세그먼트를 병합하는 과정을 이해하려고 노력하면서 lucene에 꽤 익숙하다. 최적화 메소드 (이 경우 사용 가능한 모든 Lucene 인덱스 세그먼트를 병합합니다)를 발견했습니다. 정확한 질문은 세그먼트의 모든 레벨을 병합하여 최적화합니까? &은 하나의 복잡한 세그먼트를 생성합니까? Lucene 최신 버전의 대체 제품 (Lucene 6.5)? 인덱싱 과정 후에 항상 optimize 메서드를 호출하면 인덱스가 항상 단일 세그먼트를 가지며 검색 속도가 빠릅니다.최적화 방법은 무엇을합니까? lucene의 최신 버전에서 최적화 방법을위한 대안

답변

1

우선 세그먼트를 항상 하나의 세그먼트에만 병합 할 필요는 없습니다. 그것은 구성 될 수 있습니다. 원칙적으로, 세그먼트 병합/인덱스 최적화 아이디어는 Lucene의 삭제 구현에서 비롯됩니다. Lucene은 문서를 삭제하지 않고 오히려 삭제 표시, 둘째, 새 문서가 새로운 세그먼트로 나옵니다.

Lucene에는 용어 사전 및 기타 여러 항목과 같은 많은 세그먼트 파일이 있으므로이를 병합하면 힙이 줄어들고 검색 속도가 빨라집니다. 그러나 일반적으로 병합 프로세스가 그렇게 빠르지는 않습니다.

전반적으로 새 문서의 색인을 생성 할 때마다 병합/최적화 호출간에 균형을 유지해야합니다. 살펴볼 한 가지는 MergePolicy입니다. 다른 유형의 병합을 다양한 전략으로 정의합니다. 내가 의심스럽지 않은 것을 찾지 못한다면, 당신의 요구에 맞는 것을 구현할 수 있습니다. 루씬 6.5 당신이

public void forceMerge(int maxNumSegments)IndexWriter 클래스로 사용할 수 있습니다으로