Author: yonik
Date: Tue Jun 17 10:25:36 2008
New Revision: 668756

URL: http://svn.apache.org/viewvc?rev=668756&view=rev
Log:
SOLR-303: if facet.limit <=0 then don't increase limit sent to shards, and 
don't test for refinement

Modified:
    
lucene/solr/trunk/src/java/org/apache/solr/handler/component/FacetComponent.java

Modified: 
lucene/solr/trunk/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=668756&r1=668755&r2=668756&view=diff
==============================================================================
--- 
lucene/solr/trunk/src/java/org/apache/solr/handler/component/FacetComponent.java
 (original)
+++ 
lucene/solr/trunk/src/java/org/apache/solr/handler/component/FacetComponent.java
 Tue Jun 17 10:25:36 2008
@@ -159,13 +159,17 @@
           sreq.params.remove(paramStart + FacetParams.FACET_MINCOUNT);
           sreq.params.remove(paramStart + FacetParams.FACET_OFFSET);
 
-          // set the initial limit higher in increase accuracy
-          dff.initialLimit = dff.offset + dff.limit;
-          dff.initialLimit = (int)(dff.initialLimit * 1.5) + 10;
+          if(dff.limit > 0) {          
+            // set the initial limit higher in increase accuracy
+            dff.initialLimit = dff.offset + dff.limit;
+            dff.initialLimit = (int)(dff.initialLimit * 1.5) + 10;
+          } else {
+            dff.initialLimit = dff.limit;
+          }
 
           // Uncomment the following line when testing to supress 
over-requesting facets and
           // thus cause more facet refinement queries.
-          // dff.initialLimit = dff.offset + dff.limit;
+          // if (dff.limit > 0) dff.initialLimit = dff.offset + dff.limit;
 
           sreq.params.set(paramStart + FacetParams.FACET_LIMIT,  
dff.initialLimit);
       }
@@ -232,6 +236,7 @@
 
 
     for (DistribFieldFacet dff : fi.topFacets.values()) {
+      if (dff.limit <= 0) continue; // no need to check these facets for 
refinement
       ShardFacetCount[] counts = dff.getSorted();
       int ntop = Math.min(counts.length, dff.offset + dff.limit);
       long smallestCount = counts.length == 0 ? 0 : counts[ntop-1].count;
@@ -281,7 +286,7 @@
     FacetInfo fi = rb._facetInfo;
 
     for (ShardResponse srsp: sreq.responses) {
-      int shardNum = rb.getShardNum(srsp.shard);
+      // int shardNum = rb.getShardNum(srsp.shard);
       NamedList facet_counts = 
(NamedList)srsp.rsp.getResponse().get("facet_counts");
       NamedList facet_queries = (NamedList)facet_counts.get("facet_queries");
 
@@ -339,7 +344,7 @@
       facet_fields.add(dff.field, fieldCounts);
 
       ShardFacetCount[] counts = dff.countSorted;
-      if (dff.needRefinements) {
+      if (counts == null || dff.needRefinements) {
         counts = dff.getSorted();
       }
 


Reply via email to