You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/04/25 00:23:49 UTC

svn commit: r1471741 - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/facet/ lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysQuery.java lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysScorer.java

Author: mikemccand
Date: Wed Apr 24 22:23:49 2013
New Revision: 1471741

URL: http://svn.apache.org/r1471741
Log:
LUCENE-4951: cutover another freq -> cost

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/facet/   (props changed)
    lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysQuery.java
    lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysScorer.java

Modified: lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysQuery.java?rev=1471741&r1=1471740&r2=1471741&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysQuery.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysQuery.java Wed Apr 24 22:23:49 2013
@@ -131,8 +131,11 @@ class DrillSidewaysQuery extends Query {
           dims[dim].docsEnums = new DocsEnum[drillDownTerms[dim].length];
           for(int i=0;i<drillDownTerms[dim].length;i++) {
             if (termsEnum.seekExact(drillDownTerms[dim][i].bytes(), false)) {
-              dims[dim].maxFreq = Math.max(dims[dim].maxFreq, termsEnum.docFreq());
-              dims[dim].docsEnums[i] = termsEnum.docs(null, null);
+              DocsEnum docsEnum = termsEnum.docs(null, null);
+              if (docsEnum != null) {
+                dims[dim].docsEnums[i] = docsEnum;
+                dims[dim].maxCost = Math.max(dims[dim].maxCost, docsEnum.cost());
+              }
             }
           }
         }

Modified: lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysScorer.java?rev=1471741&r1=1471740&r2=1471741&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysScorer.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/java/org/apache/lucene/facet/search/DrillSidewaysScorer.java Wed Apr 24 22:23:49 2013
@@ -107,7 +107,7 @@ class DrillSidewaysScorer extends Scorer
     /*
     System.out.println("\nbaseDocID=" + baseScorer.docID() + " est=" + estBaseHitCount);
     System.out.println("  maxDoc=" + context.reader().maxDoc());
-    System.out.println("  maxFreq=" + maxFreq);
+    System.out.println("  maxCost=" + maxCost);
     System.out.println("  dims[0].freq=" + dims[0].freq);
     if (numDims > 1) {
       System.out.println("  dims[1].freq=" + dims[1].freq);
@@ -119,7 +119,7 @@ class DrillSidewaysScorer extends Scorer
       if (baseQueryCost < drillDownCost/10) {
         //System.out.println("baseAdvance");
         doBaseAdvanceScoring(collector, docsEnums, sidewaysCollectors);
-      } else if (numDims > 1 && (dims[1].maxFreq < baseQueryCost/10)) {
+      } else if (numDims > 1 && (dims[1].maxCost < baseQueryCost/10)) {
         //System.out.println("drillDownAdvance");
         doDrillDownAdvanceScoring(collector, docsEnums, sidewaysCollectors);
       } else {
@@ -640,14 +640,20 @@ class DrillSidewaysScorer extends Scorer
 
   static class DocsEnumsAndFreq implements Comparable<DocsEnumsAndFreq> {
     DocsEnum[] docsEnums;
-    // Max docFreq for all docsEnums for this dim:
-    int maxFreq;
+    // Max cost for all docsEnums for this dim:
+    long maxCost;
     Collector sidewaysCollector;
     String dim;
 
     @Override
     public int compareTo(DocsEnumsAndFreq other) {
-      return maxFreq - other.maxFreq;
+      if (maxCost < other.maxCost) {
+        return -1;
+      } else if (maxCost > other.maxCost) {
+        return 1;
+      } else {
+        return 0;
+      }
     }
   }
 }