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 2013/01/18 17:00:23 UTC
svn commit: r1435209 - in /lucene/dev/branches/LUCENE-2878/lucene/core/src:
java/org/apache/lucene/search/ReqExclScorer.java
test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java
Author: romseygeek
Date: Fri Jan 18 16:00:22 2013
New Revision: 1435209
URL: http://svn.apache.org/viewvc?rev=1435209&view=rev
Log:
Fix NPE in ReqExclScorer
Modified:
lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java
lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java?rev=1435209&r1=1435208&r2=1435209&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/java/org/apache/lucene/search/ReqExclScorer.java Fri Jan 18 16:00:22 2013
@@ -17,13 +17,13 @@ package org.apache.lucene.search;
* limitations under the License.
*/
+import org.apache.lucene.search.intervals.ConjunctionIntervalIterator;
+import org.apache.lucene.search.intervals.IntervalIterator;
+
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
-import org.apache.lucene.search.intervals.ConjunctionIntervalIterator;
-import org.apache.lucene.search.intervals.IntervalIterator;
-
/** A Scorer for queries with a required subscorer
* and an excluding (prohibited) sub DocIdSetIterator.
* <br>
@@ -134,6 +134,8 @@ class ReqExclScorer extends Scorer {
@Override
public IntervalIterator intervals(boolean collectIntervals) throws IOException {
+ if (reqScorer == null)
+ return IntervalIterator.NO_MORE_INTERVALS;
return new ConjunctionIntervalIterator(this, collectIntervals, reqScorer.intervals(collectIntervals));
}
}
Modified: lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java?rev=1435209&r1=1435208&r2=1435209&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java (original)
+++ lucene/dev/branches/LUCENE-2878/lucene/core/src/test/org/apache/lucene/search/intervals/TestConjunctionIntervalIterator.java Fri Jan 18 16:00:22 2013
@@ -78,4 +78,21 @@ public class TestConjunctionIntervalIter
});
}
+ // andnot(andnot(pease, or(porridge, flurble)), or(foo, bar))
+ public void testConjunctionExclusionQuery() throws IOException {
+ BooleanQuery andnotinner = new BooleanQuery();
+ andnotinner.add(makeTermQuery("pease"), Occur.MUST);
+ BooleanQuery andnotinneror = new BooleanQuery();
+ andnotinneror.add(makeTermQuery("porridge"), Occur.SHOULD);
+ andnotinneror.add(makeTermQuery("flurble"), Occur.SHOULD);
+ andnotinner.add(andnotinneror, Occur.MUST_NOT);
+ BooleanQuery outer = new BooleanQuery();
+ outer.add(andnotinner, Occur.MUST);
+ BooleanQuery andnotouteror = new BooleanQuery();
+ andnotouteror.add(makeTermQuery("foo"), Occur.SHOULD);
+ andnotouteror.add(makeTermQuery("bar"), Occur.SHOULD);
+ outer.add(andnotouteror, Occur.MUST_NOT);
+ checkIntervals(outer, searcher, new int[][]{});
+ }
+
}