I've been working on some highlighting changes involving Spans
(https://issues.apache.org/jira/browse/LUCENE-2287) and could use some help
understanding when overlapping Spans are valid. To illustrate, I added the
test below to the TestSpans class; this test fails because there is no fourth
range.
Am I wrong in my expectation that that last range would match?
Thanks.
Mike
// Doc 11 contains "t1 t2 t1 t3 t2 t3"
public void testSpanNearUnOrderedOverlap() throws Exception {
boolean ordered = false;
int slop = 1;
SpanNearQuery snq = new SpanNearQuery(
new SpanQuery[] {
makeSpanTermQuery("t1"),
makeSpanTermQuery("t2"),
makeSpanTermQuery("t3") },
slop,
ordered);
Spans spans = snq.getSpans(searcher.getIndexReader());
assertTrue("first range", spans.next());
assertEquals("first doc", 11, spans.doc());
assertEquals("first start", 0, spans.start());
assertEquals("first end", 4, spans.end());
assertTrue("second range", spans.next());
assertEquals("second doc", 11, spans.doc());
assertEquals("second start", 1, spans.start());
assertEquals("second end", 4, spans.end());
assertTrue("third range", spans.next());
assertEquals("third doc", 11, spans.doc());
assertEquals("third start", 2, spans.start());
assertEquals("third end", 5, spans.end());
// Question: why wouldn't this Span be found?
assertTrue("fourth range", spans.next());
assertEquals("fourth doc", 11, spans.doc());
assertEquals("fourth start", 2, spans.start());
assertEquals("fourth end", 6, spans.end());
assertFalse("fifth range", spans.next());
}