You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by ma...@apache.org on 2009/07/14 22:56:51 UTC
svn commit: r794063 - in /lucene/java/trunk: CHANGES.txt
src/java/org/apache/lucene/search/spans/SpanOrQuery.java
src/test/org/apache/lucene/search/spans/TestSpans.java
Author: markrmiller
Date: Tue Jul 14 20:56:50 2009
New Revision: 794063
URL: http://svn.apache.org/viewvc?rev=794063&view=rev
Log:
LUCENE-1583: SpanOrQuery skipTo() doesn't always move forwards as Spans documentation indicates it should.
Modified:
lucene/java/trunk/CHANGES.txt
lucene/java/trunk/src/java/org/apache/lucene/search/spans/SpanOrQuery.java
lucene/java/trunk/src/test/org/apache/lucene/search/spans/TestSpans.java
Modified: lucene/java/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=794063&r1=794062&r2=794063&view=diff
==============================================================================
--- lucene/java/trunk/CHANGES.txt (original)
+++ lucene/java/trunk/CHANGES.txt Tue Jul 14 20:56:50 2009
@@ -378,6 +378,9 @@
18. LUCENE-1718: Fix termInfosIndexDivisor to carry over to reopened
readers (Mike McCandless)
+
+19. LUCENE-1583: SpanOrQuery skipTo() doesn't always move forwards as Spans
+ documentation indicates it should. (Moti Nisenson via Mark Miller)
New features
Modified: lucene/java/trunk/src/java/org/apache/lucene/search/spans/SpanOrQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/spans/SpanOrQuery.java?rev=794063&r1=794062&r2=794063&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/spans/SpanOrQuery.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/spans/SpanOrQuery.java Tue Jul 14 20:56:50 2009
@@ -215,16 +215,21 @@
if (queue == null) {
return initSpanQueue(target);
}
-
+
+ boolean skipCalled = false;
while (queue.size() != 0 && top().doc() < target) {
if (top().skipTo(target)) {
queue.adjustTop();
} else {
queue.pop();
}
+ skipCalled = true;
}
-
- return queue.size() != 0;
+
+ if (skipCalled) {
+ return queue.size() != 0;
+ }
+ return next();
}
public int doc() { return top().doc(); }
Modified: lucene/java/trunk/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=794063&r1=794062&r2=794063&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/search/spans/TestSpans.java Tue Jul 14 20:56:50 2009
@@ -331,6 +331,23 @@
assertFalse("final next", spans.next());
}
+ public void testSpanOrMovesForward() throws Exception {
+ Spans spans = orSpans(new String[] {"w1", "xx"});
+
+ spans.next();
+ int doc = spans.doc();
+ assertEquals(0, doc);
+
+ spans.skipTo(0);
+ doc = spans.doc();
+
+ // LUCENE-1583:
+ // according to Spans, a skipTo to the same doc or less
+ // should still call next() on the underlying Spans
+ assertEquals(1, doc);
+
+ }
+
public void testSpanOrDouble() throws Exception {
Spans spans = orSpans(new String[] {"w5", "yy"});
tstNextSpans(spans, 0, 4, 5);