2013-09-06 2 views
0

solrcloud 4.0을 사용 중이고 세그먼트 병합을위한 설정을 변경하지 않았습니다 (기본 32MB). 내 인덱스 크기가 18MB이지만 관리자 UI에는 5 개의 세그먼트가 표시됩니다. 나는 그것이 정확하거나 어떤 버그인지 이해하지 못합니까?Solr 세그먼트 mearge 정책 구성

답변

-1

1 개의 커밋마다 세그먼트가 만들어지면 병합이 필요한지 병합 정책이 검사됩니다. 지정된 병합 정책의 워터 마크보다 4 개의 커밋을 만들거나 추가로 만들었으며 일부 세그먼트가 병합되었습니다. 서로 다른 병합 설정 here을 사용하여 병합의 시각화를 볼 수 있습니다.

+0

그 사실이 아니다, SOLR이 완료 될 때마다 commit.I 그것이 –

+0

아마도 당신은 부드러운 저지 것을 의미 테스트 한에 새로운 세그먼트를 (생성하지 않습니다 (하드 디스크에 데이터를 플러시) 커밋하지? 방금 ​​테스트했습니다 : Solr 4.2.1 배포판의'exampledocs' 폴더에있는 32 개의 문서를 추가하고이 명령을 사용하여 커밋했습니다 :'java -jar post.jar * .xml'. 나는 단지 1 개의 세그먼트를 가지고 있었다. 그리고 나서 1은'monitor.xml'에서 1 개의 문서를 읽어 들여이 명령을 사용하여 커밋했습니다 :'java -jar post.jar monitor.xml'. 지금은 두 부분이 있습니다 '민 문서 : 32 최대 문서 : 33 개 삭제 된 문서 : 1 버전 : 18 세그먼트 개수 : 2' –

1

색인의 세그먼트 수는 색인이 완전히 작성되면 수정되지만 색인 작성이 진행되는 동안 달라집니다. Lucene은 새로운 문서가 색인에 추가 될 때 세그먼트를 추가하고 세그먼트를 너무 자주 매겨집니다.

새 문서가 Lucene 색인에 추가되면 처음에는 디스크에 즉시 기록되는 대신 메모리에 저장됩니다.

예를 들어 mergeFactor를 10으로 설정하면 색인에 추가 된 10 개의 문서마다 디스크에 새로운 세그먼트가 생성됩니다. 크기 10의 10 번째 세그먼트를 추가하면 10 개가 모두 100 개의 단일 세그먼트로 병합됩니다. 10 개의 세그먼트 크기 100이 추가되면 1000 개의 문서가 포함 된 단일 세그먼트로 병합됩니다. 따라서 언제든지 10 개의 색인 크기의 각 지수에 9 개 이하의 세그먼트가 있습니다.

ramBufferSizeMB

일단 축적 문서 업데이트 (메가 바이트 단위로 정의 됨)이 많은 메모리 공간, 그때 보류중인 갱신 플러시를 초과한다. 또한 새 세그먼트를 만들거나 병합을 트리거 할 수 있습니다. 일반적으로 maxBufferedDocs보다이 설정을 사용하는 것이 좋습니다. maxBufferedDocs 및 ramBufferSizeMB가 모두 solrconfig.xml에 설정된 경우 한도에 도달하면 플러시가 발생합니다.

<ramBufferSizeMB>32</ramBufferSizeMB> 

참고 :

http://www.onjava.com/pub/a/onjava/2003/03/05/lucene.html

http://docs.lucidworks.com/display/solr/IndexConfig+in+SolrConfig

+0

을 우리가 mergeFactor를 설정하면 내가, 예를 들어 "당신의 명령문 -와 혼란 스러워요 10, 색인에 추가 된 10 개의 문서마다 디스크에 새로운 세그먼트가 작성됩니다. "문서가 말하는 것 -"병합 요소는 한 번에 병합 할 세그먼트 수를 제어합니다. " –