: +1 for using a different cache, but that's being quite unfamiliar with the
: code.

in (a) common case, people tend to "drill down" and filter on facet 
constraints -- so using a special purpose cache for the refinements would 
result in redundent caching of the same info in multiple places.

: > > What's the point to refine these counts? I've thought that it make sense
: > > only for facet.limit ed requests. Is it correct statement? can those who

refinement only happens if facet.limit is used and there are eligable 
"top" constraints that were not returned by some shards.  

: > > suffer from the low performance, just unlimit  facet.limit to avoid that
: > > distributed hop?

As noted, setting facet.limit=-1 might help for low cardinality fields to 
ensure that every shard returns a count for every value and no-refinement 
is needed, but that doesn't really help you for fields with 
unknown/unbounded cardinality.

As part of the distributed pivot faceting work, the amount of 
"overrequest" done in phase 1 (for both facet.pivot & facet.field) was 
made configurable via 2 new parameters...

https://lucene.apache.org/solr/4_10_0/solr-solrj/org/apache/solr/common/params/FacetParams.html#FACET_OVERREQUEST_RATIO
https://lucene.apache.org/solr/4_10_0/solr-solrj/org/apache/solr/common/params/FacetParams.html#FACET_OVERREQUEST_COUNT

...so depending on the distribution of your data, you might find that by 
adjusting those values to increase the amount of overrequesting done, you 
can decrease the amount of refinement needed -- but there are obviously 
tradeoffs.



-Hoss
http://www.lucidworks.com/

Reply via email to