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 2014/01/26 19:51:01 UTC

svn commit: r1561529 - in /lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet: DrillSideways.java DrillSidewaysQuery.java DrillSidewaysScorer.java

Author: mikemccand
Date: Sun Jan 26 18:51:01 2014
New Revision: 1561529

URL: http://svn.apache.org/r1561529
Log:
LUCENE-5376: relax type DocsEnum -> DocIdSetIterator; fix typos

Modified:
    lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java
    lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java
    lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java

Modified: lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java?rev=1561529&r1=1561528&r2=1561529&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java (original)
+++ lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java Sun Jan 26 18:51:01 2014
@@ -179,7 +179,7 @@ public class DrillSideways {
     if (!useCollectorMethod) {
       // Optimistic: assume subQueries of the DDQ are either
       // TermQuery or BQ OR of TermQuery; if this is wrong
-      // then we detect it and fallback to the mome general
+      // then we detect it and fallback to the more general
       // but slower DrillSidewaysCollector:
       drillDownTerms = new Term[clauses.length-startClause][];
       for(int i=startClause;i<clauses.length;i++) {

Modified: lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java?rev=1561529&r1=1561528&r2=1561529&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java (original)
+++ lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java Sun Jan 26 18:51:01 2014
@@ -27,6 +27,7 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.Collector;
+import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
@@ -35,7 +36,7 @@ import org.apache.lucene.search.Weight;
 import org.apache.lucene.util.Bits;
 
 /** Only purpose is to punch through and return a
- *  SimpleDrillSidewaysScorer */ 
+ *  DrillSidewaysScorer */ 
 
 class DrillSidewaysQuery extends Query {
   final Query baseQuery;
@@ -108,12 +109,12 @@ class DrillSidewaysQuery extends Query {
       public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder,
                            boolean topScorer, Bits acceptDocs) throws IOException {
 
-        DrillSidewaysScorer.DocsEnumsAndFreq[] dims = new DrillSidewaysScorer.DocsEnumsAndFreq[drillDownTerms.length];
+        DrillSidewaysScorer.DocsAndCost[] dims = new DrillSidewaysScorer.DocsAndCost[drillDownTerms.length];
         TermsEnum termsEnum = null;
         String lastField = null;
         int nullCount = 0;
         for(int dim=0;dim<dims.length;dim++) {
-          dims[dim] = new DrillSidewaysScorer.DocsEnumsAndFreq();
+          dims[dim] = new DrillSidewaysScorer.DocsAndCost();
           dims[dim].sidewaysCollector = drillSidewaysCollectors[dim];
           String field = drillDownTerms[dim][0].field();
           dims[dim].dim = drillDownTerms[dim][0].text();
@@ -127,17 +128,17 @@ class DrillSidewaysQuery extends Query {
             }
             lastField = field;
           }
-          dims[dim].docsEnums = new DocsEnum[drillDownTerms[dim].length];
+          dims[dim].disis = new DocIdSetIterator[drillDownTerms[dim].length];
           if (termsEnum == null) {
             nullCount++;
             continue;
           }
           for(int i=0;i<drillDownTerms[dim].length;i++) {
             if (termsEnum.seekExact(drillDownTerms[dim][i].bytes())) {
-              DocsEnum docsEnum = termsEnum.docs(null, null, 0);
-              if (docsEnum != null) {
-                dims[dim].docsEnums[i] = docsEnum;
-                dims[dim].maxCost = Math.max(dims[dim].maxCost, docsEnum.cost());
+              DocIdSetIterator disi = termsEnum.docs(null, null, 0);
+              if (disi != null) {
+                dims[dim].disis[i] = disi;
+                dims[dim].maxCost = Math.max(dims[dim].maxCost, disi.cost());
               }
             }
           }

Modified: lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java?rev=1561529&r1=1561528&r2=1561529&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java (original)
+++ lucene/dev/branches/lucene5376/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java Sun Jan 26 18:51:01 2014
@@ -24,6 +24,7 @@ import java.util.Collections;
 import org.apache.lucene.index.AtomicReaderContext;
 import org.apache.lucene.index.DocsEnum;
 import org.apache.lucene.search.Collector;
+import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.Weight;
 import org.apache.lucene.util.FixedBitSet;
@@ -34,7 +35,7 @@ class DrillSidewaysScorer extends Scorer
 
   private final Collector drillDownCollector;
 
-  private final DocsEnumsAndFreq[] dims;
+  private final DocsAndCost[] dims;
 
   // DrillDown DocsEnums:
   private final Scorer baseScorer;
@@ -48,7 +49,7 @@ class DrillSidewaysScorer extends Scorer
   private float collectScore;
 
   DrillSidewaysScorer(Weight w, AtomicReaderContext context, Scorer baseScorer, Collector drillDownCollector,
-                            DocsEnumsAndFreq[] dims) {
+                      DocsAndCost[] dims) {
     super(w);
     this.dims = dims;
     this.context = context;
@@ -67,7 +68,7 @@ class DrillSidewaysScorer extends Scorer
       drillDownCollector.setScorer(this);
       drillDownCollector.setNextReader(context);
     }
-    for(DocsEnumsAndFreq dim : dims) {
+    for (DocsAndCost dim : dims) {
       dim.sidewaysCollector.setScorer(this);
       dim.sidewaysCollector.setNextReader(context);
     }
@@ -79,25 +80,25 @@ class DrillSidewaysScorer extends Scorer
 
     // Position all scorers to their first matching doc:
     baseScorer.nextDoc();
-    for(DocsEnumsAndFreq dim : dims) {
-      for (DocsEnum docsEnum : dim.docsEnums) {
-        if (docsEnum != null) {
-          docsEnum.nextDoc();
+    for (DocsAndCost dim : dims) {
+      for (DocIdSetIterator disi : dim.disis) {
+        if (disi != null) {
+          disi.nextDoc();
         }
       }
     }
 
     final int numDims = dims.length;
 
-    DocsEnum[][] docsEnums = new DocsEnum[numDims][];
+    DocIdSetIterator[][] disis = new DocIdSetIterator[numDims][];
     Collector[] sidewaysCollectors = new Collector[numDims];
     long drillDownCost = 0;
-    for(int dim=0;dim<numDims;dim++) {
-      docsEnums[dim] = dims[dim].docsEnums;
+    for (int dim=0;dim<numDims;dim++) {
+      disis[dim] = dims[dim].disis;
       sidewaysCollectors[dim] = dims[dim].sidewaysCollector;
-      for (DocsEnum de : dims[dim].docsEnums) {
-        if (de != null) {
-          drillDownCost += de.cost();
+      for (DocIdSetIterator disi : dims[dim].disis) {
+        if (disi != null) {
+          drillDownCost += disi.cost();
         }
       }
     }
@@ -116,19 +117,19 @@ class DrillSidewaysScorer extends Scorer
 
     if (baseQueryCost < drillDownCost/10) {
       //System.out.println("baseAdvance");
-      doBaseAdvanceScoring(collector, docsEnums, sidewaysCollectors);
+      doBaseAdvanceScoring(collector, disis, sidewaysCollectors);
     } else if (numDims > 1 && (dims[1].maxCost < baseQueryCost/10)) {
       //System.out.println("drillDownAdvance");
-      doDrillDownAdvanceScoring(collector, docsEnums, sidewaysCollectors);
+      doDrillDownAdvanceScoring(collector, disis, sidewaysCollectors);
     } else {
       //System.out.println("union");
-      doUnionScoring(collector, docsEnums, sidewaysCollectors);
+      doUnionScoring(collector, disis, sidewaysCollectors);
     }
   }
 
   /** Used when drill downs are highly constraining vs
    *  baseQuery. */
-  private void doDrillDownAdvanceScoring(Collector collector, DocsEnum[][] docsEnums, Collector[] sidewaysCollectors) throws IOException {
+  private void doDrillDownAdvanceScoring(Collector collector, DocIdSetIterator[][] disis, Collector[] sidewaysCollectors) throws IOException {
     final int maxDoc = context.reader().maxDoc();
     final int numDims = dims.length;
 
@@ -157,11 +158,11 @@ class DrillSidewaysScorer extends Scorer
       //if (DEBUG) {
       //  System.out.println("  dim0");
       //}
-      for(DocsEnum docsEnum : docsEnums[0]) {
-        if (docsEnum == null) {
+      for (DocIdSetIterator disi : disis[0]) {
+        if (disi == null) {
           continue;
         }
-        int docID = docsEnum.docID();
+        int docID = disi.docID();
         while (docID < nextChunkStart) {
           int slot = docID & MASK;
 
@@ -176,7 +177,7 @@ class DrillSidewaysScorer extends Scorer
             counts[slot] = 1;
           }
 
-          docID = docsEnum.nextDoc();
+          docID = disi.nextDoc();
         }
       }
 
@@ -184,11 +185,11 @@ class DrillSidewaysScorer extends Scorer
       //if (DEBUG) {
       //  System.out.println("  dim1");
       //}
-      for(DocsEnum docsEnum : docsEnums[1]) {
-        if (docsEnum == null) {
+      for (DocIdSetIterator disi : disis[1]) {
+        if (disi == null) {
           continue;
         }
-        int docID = docsEnum.docID();
+        int docID = disi.docID();
         while (docID < nextChunkStart) {
           int slot = docID & MASK;
 
@@ -218,7 +219,7 @@ class DrillSidewaysScorer extends Scorer
             }
           }
 
-          docID = docsEnum.nextDoc();
+          docID = disi.nextDoc();
         }
       }
 
@@ -272,15 +273,15 @@ class DrillSidewaysScorer extends Scorer
       
       // TODO: factor this out & share w/ union scorer,
       // except we start from dim=2 instead:
-      for(int dim=2;dim<numDims;dim++) {
+      for (int dim=2;dim<numDims;dim++) {
         //if (DEBUG) {
         //  System.out.println("  dim=" + dim + " [" + dims[dim].dim + "]");
         //}
-        for(DocsEnum docsEnum : docsEnums[dim]) {
-          if (docsEnum == null) {
+        for (DocIdSetIterator disi : disis[dim]) {
+          if (disi == null) {
             continue;
           }
-          int docID = docsEnum.docID();
+          int docID = disi.docID();
           while (docID < nextChunkStart) {
             int slot = docID & MASK;
             if (docIDs[slot] == docID && counts[slot] >= dim) {
@@ -300,7 +301,7 @@ class DrillSidewaysScorer extends Scorer
               }
             }
             // TODO: sometimes use advance?
-            docID = docsEnum.nextDoc();
+            docID = disi.nextDoc();
           }
         }
       }
@@ -309,7 +310,7 @@ class DrillSidewaysScorer extends Scorer
       //if (DEBUG) {
       //  System.out.println("  now collect: " + filledCount + " hits");
       //}
-      for(int i=0;i<filledCount;i++) {
+      for (int i=0;i<filledCount;i++) {
         int slot = filledSlots[i];
         collectDocID = docIDs[slot];
         collectScore = scores[slot];
@@ -334,7 +335,7 @@ class DrillSidewaysScorer extends Scorer
   /** Used when base query is highly constraining vs the
    *  drilldowns; in this case we just .next() on base and
    *  .advance() on the dims. */
-  private void doBaseAdvanceScoring(Collector collector, DocsEnum[][] docsEnums, Collector[] sidewaysCollectors) throws IOException {
+  private void doBaseAdvanceScoring(Collector collector, DocIdSetIterator[][] disis, Collector[] sidewaysCollectors) throws IOException {
     //if (DEBUG) {
     //  System.out.println("  doBaseAdvanceScoring");
     //}
@@ -344,18 +345,18 @@ class DrillSidewaysScorer extends Scorer
 
     nextDoc: while (docID != NO_MORE_DOCS) {
       int failedDim = -1;
-      for(int dim=0;dim<numDims;dim++) {
+      for (int dim=0;dim<numDims;dim++) {
         // TODO: should we sort this 2nd dimension of
         // docsEnums from most frequent to least?
         boolean found = false;
-        for(DocsEnum docsEnum : docsEnums[dim]) {
-          if (docsEnum == null) {
+        for (DocIdSetIterator disi : disis[dim]) {
+          if (disi == null) {
             continue;
           }
-          if (docsEnum.docID() < docID) {
-            docsEnum.advance(docID);
+          if (disi.docID() < docID) {
+            disi.advance(docID);
           }
-          if (docsEnum.docID() == docID) {
+          if (disi.docID() == docID) {
             found = true;
             break;
           }
@@ -404,7 +405,7 @@ class DrillSidewaysScorer extends Scorer
     // end instead:
 
     // Tally sideways counts:
-    for(int dim=0;dim<sidewaysCollectors.length;dim++) {
+    for (int dim=0;dim<sidewaysCollectors.length;dim++) {
       sidewaysCollectors[dim].collect(collectDocID);
     }
   }
@@ -416,7 +417,7 @@ class DrillSidewaysScorer extends Scorer
     sidewaysCollectors[dim].collect(collectDocID);
   }
 
-  private void doUnionScoring(Collector collector, DocsEnum[][] docsEnums, Collector[] sidewaysCollectors) throws IOException {
+  private void doUnionScoring(Collector collector, DocIdSetIterator[][] disis, Collector[] sidewaysCollectors) throws IOException {
     //if (DEBUG) {
     //  System.out.println("  doUnionScoring");
     //}
@@ -478,11 +479,11 @@ class DrillSidewaysScorer extends Scorer
       //if (DEBUG) {
       //  System.out.println("  dim=0 [" + dims[0].dim + "]");
       //}
-      for(DocsEnum docsEnum : docsEnums[0]) {
-        if (docsEnum == null) {
+      for (DocIdSetIterator disi : disis[0]) {
+        if (disi == null) {
           continue;
         }
-        docID = docsEnum.docID();
+        docID = disi.docID();
         //if (DEBUG) {
         //  System.out.println("    start docID=" + docID);
         //}
@@ -495,19 +496,19 @@ class DrillSidewaysScorer extends Scorer
             missingDims[slot] = 1;
             counts[slot] = 2;
           }
-          docID = docsEnum.nextDoc();
+          docID = disi.nextDoc();
         }
       }
 
-      for(int dim=1;dim<numDims;dim++) {
+      for (int dim=1;dim<numDims;dim++) {
         //if (DEBUG) {
         //  System.out.println("  dim=" + dim + " [" + dims[dim].dim + "]");
         //}
-        for(DocsEnum docsEnum : docsEnums[dim]) {
-          if (docsEnum == null) {
+        for (DocIdSetIterator disi : disis[dim]) {
+          if (disi == null) {
             continue;
           }
-          docID = docsEnum.docID();
+          docID = disi.docID();
           //if (DEBUG) {
           //  System.out.println("    start docID=" + docID);
           //}
@@ -530,14 +531,14 @@ class DrillSidewaysScorer extends Scorer
                 counts[slot] = dim+1;
               }
             }
-            docID = docsEnum.nextDoc();
+            docID = disi.nextDoc();
           }
 
           // TODO: sometimes use advance?
 
           /*
             int docBase = nextChunkStart - CHUNK;
-            for(int i=0;i<filledCount;i++) {
+            for (int i=0;i<filledCount;i++) {
               int slot = filledSlots[i];
               docID = docBase + filledSlots[i];
               if (docIDs[slot] == docID && counts[slot] >= dim) {
@@ -570,7 +571,7 @@ class DrillSidewaysScorer extends Scorer
       //if (DEBUG) {
       //  System.out.println("  now collect: " + filledCount + " hits");
       //}
-      for(int i=0;i<filledCount;i++) {
+      for (int i=0;i<filledCount;i++) {
         // NOTE: This is actually in-order collection,
         // because we only accept docs originally returned by
         // the baseScorer (ie that Scorer is AND'd)
@@ -633,15 +634,15 @@ class DrillSidewaysScorer extends Scorer
     return Collections.singletonList(new ChildScorer(baseScorer, "MUST"));
   }
 
-  static class DocsEnumsAndFreq implements Comparable<DocsEnumsAndFreq> {
-    DocsEnum[] docsEnums;
+  static class DocsAndCost implements Comparable<DocsAndCost> {
+    DocIdSetIterator[] disis;
     // Max cost for all docsEnums for this dim:
     long maxCost;
     Collector sidewaysCollector;
     String dim;
 
     @Override
-    public int compareTo(DocsEnumsAndFreq other) {
+    public int compareTo(DocsAndCost other) {
       if (maxCost < other.maxCost) {
         return -1;
       } else if (maxCost > other.maxCost) {