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 2018/04/26 10:41:25 UTC
[2/3] lucene-solr:branch_7x: LUCENE-8196: Fix unordered case with
non-matching subinterval
LUCENE-8196: Fix unordered case with non-matching subinterval
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/345fdff4
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/345fdff4
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/345fdff4
Branch: refs/heads/branch_7x
Commit: 345fdff47cc6f09d774afefd46b2a653d0da7fa3
Parents: 0d1b4f2
Author: Alan Woodward <ro...@apache.org>
Authored: Thu Apr 26 11:27:33 2018 +0100
Committer: Alan Woodward <ro...@apache.org>
Committed: Thu Apr 26 11:27:58 2018 +0100
----------------------------------------------------------------------
.../search/intervals/IntervalFunction.java | 4 +++-
.../search/intervals/TestIntervalQuery.java | 12 ++++++++++
.../lucene/search/intervals/TestIntervals.java | 25 ++++++++++++++++++--
3 files changed, 38 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/345fdff4/lucene/sandbox/src/java/org/apache/lucene/search/intervals/IntervalFunction.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/search/intervals/IntervalFunction.java b/lucene/sandbox/src/java/org/apache/lucene/search/intervals/IntervalFunction.java
index c550a72..ddd891f 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/search/intervals/IntervalFunction.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/search/intervals/IntervalFunction.java
@@ -238,7 +238,9 @@ abstract class IntervalFunction {
queueEnd = start = end = -1;
this.queue.clear();
for (IntervalIterator it : subIterators) {
- it.nextInterval();
+ if (it.nextInterval() == NO_MORE_INTERVALS) {
+ break;
+ }
queue.add(it);
updateRightExtreme(it);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/345fdff4/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervalQuery.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervalQuery.java b/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervalQuery.java
index de7341e..8f0623e 100644
--- a/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervalQuery.java
+++ b/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervalQuery.java
@@ -166,4 +166,16 @@ public class TestIntervalQuery extends LuceneTestCase {
checkHits(q, new int[]{ 6, 7 });
}
+ public void testUnordered() throws IOException {
+ Query q = new IntervalQuery(field,
+ Intervals.unordered(
+ Intervals.term("w1"),
+ Intervals.ordered(
+ Intervals.term("w3"),
+ Intervals.term("yy")
+ )
+ )
+ );
+ checkHits(q, new int[]{3});
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/345fdff4/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervals.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervals.java b/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervals.java
index 8f91a7f..9405f79 100644
--- a/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervals.java
+++ b/lucene/sandbox/src/test/org/apache/lucene/search/intervals/TestIntervals.java
@@ -20,6 +20,7 @@ package org.apache.lucene.search.intervals;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.CharArraySet;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
@@ -60,7 +61,7 @@ public class TestIntervals extends LuceneTestCase {
private static Directory directory;
private static IndexSearcher searcher;
- private static Analyzer analyzer = new StandardAnalyzer();
+ private static Analyzer analyzer = new StandardAnalyzer(CharArraySet.EMPTY_SET);
@BeforeClass
public static void setupIndex() throws IOException {
@@ -172,7 +173,7 @@ public class TestIntervals extends LuceneTestCase {
}
public void testIntervalDisjunction() throws IOException {
- checkIntervals(Intervals.or(Intervals.term("pease"), Intervals.term("hot")), "field1", 4, new int[][]{
+ checkIntervals(Intervals.or(Intervals.term("pease"), Intervals.term("hot"), Intervals.term("notMatching")), "field1", 4, new int[][]{
{},
{ 0, 0, 2, 2, 3, 3, 6, 6, 17, 17},
{ 0, 0, 3, 3, 5, 5, 6, 6, 21, 21},
@@ -194,4 +195,24 @@ public class TestIntervals extends LuceneTestCase {
});
}
+ public void testNesting2() throws IOException {
+ checkIntervals(
+ Intervals.unordered(
+ Intervals.ordered(
+ Intervals.term("like"),
+ Intervals.term("it"),
+ Intervals.term("cold")
+ ),
+ Intervals.term("pease")
+ ),
+ "field1", 2, new int[][]{
+ {},
+ {6, 21},
+ {6, 17},
+ {},
+ {},
+ {}
+ });
+ }
+
}