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) {