Index: lucene/src/test/org/apache/lucene/search/spans/TestSpanNearQueryInOrder.java =================================================================== --- lucene/src/test/org/apache/lucene/search/spans/TestSpanNearQueryInOrder.java (revision 0) +++ lucene/src/test/org/apache/lucene/search/spans/TestSpanNearQueryInOrder.java (revision 0) @@ -0,0 +1,78 @@ +package org.apache.lucene.search.spans; + +import java.io.IOException; +import java.util.Random; + +import org.apache.lucene.analysis.MockAnalyzer; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; +import org.apache.lucene.index.IndexWriter; +import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.IndexSearcher; +import org.apache.lucene.search.PhraseQuery; +import org.apache.lucene.search.TopScoreDocCollector; +import org.apache.lucene.store.RAMDirectory; +import org.apache.lucene.util.LuceneTestCase; +import org.junit.Test; + +public class TestSpanNearQueryInOrder extends LuceneTestCase { + + private static final String TEXT = "text"; + + private void addDoc(IndexWriter w, String text) throws IOException { + Document doc = new Document(); + doc.add(new Field(TEXT, text, Field.Store.YES, Field.Index.ANALYZED)); + w.addDocument(doc); + } + + private void assertSpanSearch(IndexSearcher searcher, int nExpected, boolean inOrder, int slop, String...terms) throws IOException { + // first verify that handled correctly by a phrase query + PhraseQuery pq = new PhraseQuery(); + for (String t : terms) { + pq.add(new Term(TEXT, t)); + } + pq.setSlop(slop); + TopScoreDocCollector collector = TopScoreDocCollector.create(3, false); + searcher.search(pq, collector); + assertEquals("Wrong #hits for query "+pq, nExpected, collector.getTotalHits()); + + // now verify as span query + SpanQuery[] clauses = new SpanQuery[terms.length]; + for (int i=0; i