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;
+ }
}
}
}