You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2012/08/24 21:13:20 UTC
svn commit: r1377055 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/search/
Author: rmuir
Date: Fri Aug 24 19:13:19 2012
New Revision: 1377055
URL: http://svn.apache.org/viewvc?rev=1377055&view=rev
Log:
LUCENE-4327: Use BooleanScorer1 for filter-down-low queries
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReqOptSumScorer.java
Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1377055&r1=1377054&r2=1377055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Fri Aug 24 19:13:19 2012
@@ -115,6 +115,9 @@ Optimizations
* LUCENE-4317: Improve reuse of internal TokenStreams and StringReader
in oal.document.Field. (Uwe Schindler, Chris Male, Robert Muir)
+* LUCENE-4327: Support out-of-order scoring in FilteredQuery for higher
+ performance. (Mike McCandless, Robert Muir)
+
Build
* LUCENE-3985: Upgrade to randomizedtesting 2.0.0. Added support for
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java?rev=1377055&r1=1377054&r2=1377055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/BooleanScorer.java Fri Aug 24 19:13:19 2012
@@ -23,7 +23,6 @@ import java.util.Collection;
import java.util.List;
import org.apache.lucene.index.AtomicReaderContext;
-import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanQuery.BooleanWeight;
/* Description from Doug Cutting (excerpted from
@@ -115,7 +114,7 @@ final class BooleanScorer extends Scorer
// Therefore the only methods that are implemented are score() and doc().
private static final class BucketScorer extends Scorer {
- float score;
+ double score;
int doc = NO_MORE_DOCS;
int freq;
@@ -134,13 +133,13 @@ final class BooleanScorer extends Scorer
public int nextDoc() { return NO_MORE_DOCS; }
@Override
- public float score() { return score; }
+ public float score() { return (float)score; }
}
static final class Bucket {
int doc = -1; // tells if bucket is valid
- float score; // incremental score
+ double score; // incremental score
// TODO: break out bool anyProhibited, int
// numRequiredMatched; then we can remove 32 limit on
// required clauses
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java?rev=1377055&r1=1377054&r2=1377055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java Fri Aug 24 19:13:19 2012
@@ -129,6 +129,7 @@ class ConjunctionScorer extends Scorer {
@Override
public float score() throws IOException {
+ // TODO: sum into a double and cast to float if we ever send required clauses to BS1
float sum = 0.0f;
for (int i = 0; i < scorers.length; i++) {
sum += scorers[i].score();
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java?rev=1377055&r1=1377054&r2=1377055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java Fri Aug 24 19:13:19 2012
@@ -90,6 +90,7 @@ class ConjunctionTermScorer extends Scor
@Override
public float score() throws IOException {
+ // TODO: sum into a double and cast to float if we ever send required clauses to BS1
float sum = 0.0f;
for (DocsAndFreqs docs : docsAndFreqs) {
sum += docs.scorer.score();
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java?rev=1377055&r1=1377054&r2=1377055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/FilteredQuery.java Fri Aug 24 19:13:19 2012
@@ -83,9 +83,7 @@ public class FilteredQuery extends Query
@Override
public boolean scoresDocsOutOfOrder() {
- // TODO: Support out-of-order scoring!
- // For now we return false here, as we always get the scorer in order
- return false;
+ return true;
}
@Override
@@ -148,9 +146,7 @@ public class FilteredQuery extends Query
if (useRandomAccess) {
// if we are using random access, we return the inner scorer, just with other acceptDocs
- // TODO, replace this by when BooleanWeight is fixed to be consistent with its scorer implementations:
- // return weight.scorer(context, scoreDocsInOrder, topScorer, filterAcceptDocs);
- return weight.scorer(context, true, topScorer, filterAcceptDocs);
+ return weight.scorer(context, scoreDocsInOrder, topScorer, filterAcceptDocs);
} else {
assert firstFilterDoc > -1;
// we are gonna advance() this scorer, so we set inorder=true/toplevel=false
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReqOptSumScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReqOptSumScorer.java?rev=1377055&r1=1377054&r2=1377055&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReqOptSumScorer.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/search/ReqOptSumScorer.java Fri Aug 24 19:13:19 2012
@@ -69,6 +69,7 @@ class ReqOptSumScorer extends Scorer {
*/
@Override
public float score() throws IOException {
+ // TODO: sum into a double and cast to float if we ever send required clauses to BS1
int curDoc = reqScorer.docID();
float reqScore = reqScorer.score();
if (optScorer == null) {