+++ /dev/null
-package org.apache.lucene.search.spans;
-
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.apache.lucene.analysis.MockAnalyzer;
-
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.CheckHits;
-import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Weight;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.LuceneTestCase;
-
-public class TestNearSpansOrdered extends LuceneTestCase {
- protected IndexSearcher searcher;
- protected Directory directory;
- protected IndexReader reader;
-
- public static final String FIELD = "field";
- public static final QueryParser qp =
- new QueryParser(TEST_VERSION_CURRENT, FIELD, new MockAnalyzer(random));
-
- @Override
- public void tearDown() throws Exception {
- searcher.close();
- reader.close();
- directory.close();
- super.tearDown();
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- directory = newDirectory();
- RandomIndexWriter writer= new RandomIndexWriter(random, directory, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
- for (int i = 0; i < docFields.length; i++) {
- Document doc = new Document();
- doc.add(newField(FIELD, docFields[i], Field.Store.NO, Field.Index.ANALYZED));
- writer.addDocument(doc);
- }
- reader = writer.getReader();
- writer.close();
- searcher = newSearcher(reader);
- }
-
- protected String[] docFields = {
- "w1 w2 w3 w4 w5",
- "w1 w3 w2 w3 zz",
- "w1 xx w2 yy w3",
- "w1 w3 xx w2 yy w3 zz"
- };
-
- protected SpanNearQuery makeQuery(String s1, String s2, String s3,
- int slop, boolean inOrder) {
- return new SpanNearQuery
- (new SpanQuery[] {
- new SpanTermQuery(new Term(FIELD, s1)),
- new SpanTermQuery(new Term(FIELD, s2)),
- new SpanTermQuery(new Term(FIELD, s3)) },
- slop,
- inOrder);
- }
- protected SpanNearQuery makeQuery() {
- return makeQuery("w1","w2","w3",1,true);
- }
-
- public void testSpanNearQuery() throws Exception {
- SpanNearQuery q = makeQuery();
- CheckHits.checkHits(random, q, FIELD, searcher, new int[] {0,1});
- }
-
- public String s(Spans span) {
- return s(span.doc(), span.start(), span.end());
- }
- public String s(int doc, int start, int end) {
- return "s(" + doc + "," + start + "," + end +")";
- }
-
- public void testNearSpansNext() throws Exception {
- SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
- assertEquals(true, span.next());
- assertEquals(s(0,0,3), s(span));
- assertEquals(true, span.next());
- assertEquals(s(1,0,4), s(span));
- assertEquals(false, span.next());
- }
-
- /**
- * test does not imply that skipTo(doc+1) should work exactly the
- * same as next -- it's only applicable in this case since we know doc
- * does not contain more than one span
- */
- public void testNearSpansSkipToLikeNext() throws Exception {
- SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
- assertEquals(true, span.skipTo(0));
- assertEquals(s(0,0,3), s(span));
- assertEquals(true, span.skipTo(1));
- assertEquals(s(1,0,4), s(span));
- assertEquals(false, span.skipTo(2));
- }
-
- public void testNearSpansNextThenSkipTo() throws Exception {
- SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
- assertEquals(true, span.next());
- assertEquals(s(0,0,3), s(span));
- assertEquals(true, span.skipTo(1));
- assertEquals(s(1,0,4), s(span));
- assertEquals(false, span.next());
- }
-
- public void testNearSpansNextThenSkipPast() throws Exception {
- SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
- assertEquals(true, span.next());
- assertEquals(s(0,0,3), s(span));
- assertEquals(false, span.skipTo(2));
- }
-
- public void testNearSpansSkipPast() throws Exception {
- SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
- assertEquals(false, span.skipTo(2));
- }
-
- public void testNearSpansSkipTo0() throws Exception {
- SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
- assertEquals(true, span.skipTo(0));
- assertEquals(s(0,0,3), s(span));
- }
-
- public void testNearSpansSkipTo1() throws Exception {
- SpanNearQuery q = makeQuery();
- Spans span = q.getSpans(searcher.getIndexReader());
- assertEquals(true, span.skipTo(1));
- assertEquals(s(1,0,4), s(span));
- }
-
- /**
- * not a direct test of NearSpans, but a demonstration of how/when
- * this causes problems
- */
- public void testSpanNearScorerSkipTo1() throws Exception {
- SpanNearQuery q = makeQuery();
- Weight w = searcher.createNormalizedWeight(q);
- Scorer s = w.scorer(searcher.getIndexReader(), true, false);
- assertEquals(1, s.advance(1));
- }
-
- /**
- * not a direct test of NearSpans, but a demonstration of how/when
- * this causes problems
- */
- public void testSpanNearScorerExplain() throws Exception {
- SpanNearQuery q = makeQuery();
- Explanation e = searcher.explain(q, 1);
- assertTrue("Scorer explanation value for doc#1 isn't positive: "
- + e.toString(),
- 0.0f < e.getValue());
- }
-
-}