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"));