You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2012/11/20 10:48:54 UTC
svn commit: r1411603 - in /lucene/dev/branches/LUCENE-2878/lucene/core/src:
java/org/apache/lucene/search/intervals/
test/org/apache/lucene/search/intervals/
Author: romseygeek
Date: Tue Nov 20 09:48:53 2012
New Revision: 1411603
URL: http://svn.apache.org/viewvc?rev=1411603&view=rev
Log:
LUCENE-4555: Only advance filter if parent Scorer matches
Modified:
lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/IntervalFilterQuery.java
lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/IntervalTestBase.java
lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/IntervalFilterQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/IntervalFilterQuery.java?rev=1411603&r1=1411602&r2=1411603&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/IntervalFilterQuery.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/intervals/IntervalFilterQuery.java Tue Nov 20 09:48:53 2012
@@ -216,11 +216,10 @@ public class IntervalFilterQuery extends
@Override
public int scorerAdvanced(int docId) throws IOException {
- docId = collectingScorer.advance(docId);
- if (filter.docID() == NO_MORE_DOCS) {
- return NO_MORE_DOCS;
- }
- return filter.scorerAdvanced(docId);
+ int target = collectingScorer.advance(docId);
+ if (target > docId)
+ return target;
+ return filter.scorerAdvanced(target);
}
@Override
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/IntervalTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/IntervalTestBase.java?rev=1411603&r1=1411602&r2=1411603&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/IntervalTestBase.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/IntervalTestBase.java Tue Nov 20 09:48:53 2012
@@ -135,7 +135,7 @@ public abstract class IntervalTestBase e
directory = newDirectory();
IndexWriterConfig config = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
//config.setCodec(Codec.forName("SimpleText"));
- config.setCodec(Codec.forName("Lucene41"));
+ config.setCodec(Codec.forName("Asserting"));
RandomIndexWriter writer = new RandomIndexWriter(random(), directory, config);
addDocs(writer);
reader = writer.getReader();
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java?rev=1411603&r1=1411602&r2=1411603&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestNestedIntervalFilterQueries.java Tue Nov 20 09:48:53 2012
@@ -55,6 +55,20 @@ public class TestNestedIntervalFilterQue
checkIntervals(bq, searcher, new int[][]{});
}
+ public void testFilterDisjunctionQuery() throws IOException {
+ Query near1 = makeTermQuery("w4");
+ Query near2 = new OrderedNearQuery(3, false, makeTermQuery("w1"), makeTermQuery("w10"));
+ BooleanQuery bq = new BooleanQuery();
+ bq.add(near1, BooleanClause.Occur.SHOULD);
+ bq.add(near2, BooleanClause.Occur.SHOULD);
+ checkIntervals(bq, searcher, new int[][]{
+ { 0, 3, 3 },
+ { 1, 2, 2 },
+ { 2, 0, 2, 3, 3 },
+ { 3, 3, 3 }
+ });
+ }
+
// or(w1 pre/2 w2, w1 pre/3 w10)
public void testOrNearNearQuery() throws IOException {
Query near1 = new OrderedNearQuery(2, false, makeTermQuery("w1"), makeTermQuery("w2"));