2010-05-25 2 views
7

저는 Solr을 사용 중이며 "group"필드를 넘어서고 싶습니다.Solr은 많은 수의면 값에 대해 얼마나 잘 스케일됩니까?

"그룹"은 사용자가 만들었 기 때문에 잠재적으로 "그룹"에 대한 값이 매우 많을 수 있습니다.

  • Solr이 이와 같은 유스 케이스를 처리 할 수 ​​있습니까? 아니면 Solr은 많은 값을 가진 패싯 필드에 적절하지 않습니까?

  • 패싯 필드에 대해 반환되는 값의 수를 제한하기 위해 facet.limit를 설정할 수 있음을 이해합니다. 이게 내 도움이 될까요? facet.limit를 50으로 설정하면 검색에서 "그룹"에 대해 100,000 개의 일치하는 값이 있다고 가정합니다. Solr이 모든 패싯을 처리하고 정렬해야하기 때문에 쿼리의 속도가 빨라지거나 쿼리가 여전히 느려질 수 있습니다. 가치와 상위 50 것들을 반환합니까?

  • 많은 수의면 값에 대해 Solr을 조정하는 방법에 대한 정보는 무엇입니까?

감사합니다.

답변

7

1.4 이후, solr은 기본적으로 간단한 패싯 카운트를 사용하기 때문에 많은 수의 패싯을 매우 잘 처리합니다. (facet.method는 기본적으로 'fc'입니다.)

1.4 이전에는 solr이 소수 값의 속성에 대한면 처리 (faceting)가 빠르기 쉬운 필터 기반면 처리 방법 (enum)을 사용했습니다. 이 방법은 패싯 값마다 하나의 필터가 필요합니다.

facet.limit 정보는 행/오프셋이있는 결과 공간을 탐색하는 것처럼 패싯 공간을 탐색하는 방법 (facet.offset과 함께)과 같습니다. 그래서 10 ~ 50의 가치가 있습니다.

행/오프셋과 마찬가지로 Solr의 특성으로 인해 오프셋이 커지면 facet.limit/facet.offset의 성능이 떨어질 것으로 예상 할 수 있지만 합리적인 수준에 머물러 있으면 완벽하게 좋을 것입니다 경계.

기본적으로 solr은 더 빈번한 패싯을 먼저 출력합니다.

요약하면 :

    • 사용 SOLR 1.4을 확인 facet.method를 확인하는 것은 'FC'(음, 어쨌든 기본입니다)입니다.

    • facet.limit/facet.offset을 사용하여 패싯 공간을 탐색하십시오.

  • 1

    캐시 패 시팅 관련 파라미터 (시스템에 잘 맞는 값을 선택하기 위해 다른 캐시 크기를 시도 할) 수 있도록 misregard하지 마십시오

    <filterCache class="solr.FastLRUCache" size="4096" initialSize="4096" autowarmCount="4096"/> 
    <queryResultCache class="solr.LRUCache" size="5000" initialSize="5000" autowarmCount="5000"/> 
    
    관련 문제