LatLonType (subType = tdouble) 스키마가있는 공간 필터링으로 SOLR-3.4를 사용하고 있습니다. 나는 약 20M 장소의 색인을 가지고있다. 내 기본 문제는 캐시 = true로 bbox 필터를 수행하면 성능이 비교적 좋으며 (~ 40-50 QPS, 약 100-150ms 대기 시간) 크나큰 단점이 궁극적으로 메이저 콜렉션으로 이어지는 것입니다 30-40 분마다 (매우 큰 힙에 25GB). 그리고 그 시점에서 성능은 용납 할 수없는 수준입니다. 반면에 나는 bbox 필터에 대한 캐싱을 해제 할 수 있지만 대기 시간과 QPS는 떨어집니다 (대기 시간은 100ms => 500ms). NumericRangeQuery javadoc은 얻을 수있는 뛰어난 성능 (100 밀리 초 미만)에 대해 이야기했지만, 이제는 filterCache가 활성화되어 있는지 궁금해하며 결과적으로 힙 성장을 살펴 보지 못했습니다. 어느 구성도 실제로 받아 들일 수 없기 때문에 이런 종류의 catch-22라고 생각합니다.공간적 성능이 좋지 않습니다.
나는 어떤 생각이든 열려 있습니다. 나의 마지막 아이디어 (시도되지 않음)는 geo 해시를 사용하는 것입니다 (그리고 cache = false로 더 잘 수행되거나 cache = true 인 경우 더 많은 힙 증가가 가능하도록기도합니다).
편집 :
정밀 단계 : (내 생각 이중 8) 기본
시스템 메모리 : 32기가바이트 (EC2 M2 2XL)
JVM : 24기가바이트
색인 크기 : 11기가바이트
EDIT2 :
,536,precisionStep이 8 인 tdouble은 복식이 8 비트 시퀀스로 분할된다는 것을 의미합니다. 모든 위도와 경도가 8 비트의 마지막 순서 만 다른 경우 tdouble은 범위 쿼리에서 정상적인 성능을 갖습니다. 이것이 제가 4의 정밀도 스텝을 테스트 할 것을 제안한 이유입니다.
질문 : 이중 값에 대해 실제로 의미하는 것은 무엇입니까?
tdouble 필드에 어떤 precisionStep을 사용하고 있습니까? 시스템 적으로 OS 캐시에 남은 메모리가 있습니까? 시스템의 전체 메모리 양, JVM에 주어진 양 및 색인 크기 (바이트 단위)를 공유 할 수 있습니까? – jpountz
@jpountz : 업데이트 된 질문을 참조하십시오. 인덱스 크기를 얻는 방법을 모르겠습니다. – Kevin
유닉스에서는'du -hs indexDir' 만 실행하면된다.Windows에서는 인덱스 디렉토리에서 마우스 오른쪽 버튼을 클릭 한 다음 propertis를 클릭하면됩니다. – jpountz