ehatcher    2004/04/09 08:06:59

  Added:       src/test/org/apache/lucene/search/spans TestSpans.java
  Log:
  add SpanNearQuery test case contributed by Paul Elschot - note, this test currently 
fails due to a bug.
  
  Revision  Changes    Path
  1.1                  
jakarta-lucene/src/test/org/apache/lucene/search/spans/TestSpans.java
  
  Index: TestSpans.java
  ===================================================================
  package org.apache.lucene.search.spans;
  
  /**
   * Copyright 2004 The Apache Software Foundation
   *
   * Licensed 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.search.IndexSearcher;
  import org.apache.lucene.search.Query;
  import org.apache.lucene.search.Hits;
  import org.apache.lucene.store.RAMDirectory;
  import org.apache.lucene.index.IndexWriter;
  import org.apache.lucene.index.Term;
  import org.apache.lucene.analysis.WhitespaceAnalyzer;
  import org.apache.lucene.document.Document;
  import org.apache.lucene.document.Field;
  import junit.framework.TestCase;
  
  import java.io.IOException;
  import java.util.Set;
  import java.util.TreeSet;
  
  public class TestSpans extends TestCase {
    private IndexSearcher searcher;
  
    public void setUp() throws Exception {
      RAMDirectory directory = new RAMDirectory();
      IndexWriter writer
        = new IndexWriter(directory, new WhitespaceAnalyzer(), true);
      //writer.infoStream = System.out;
      StringBuffer buffer = new StringBuffer();
      for (int i = 0; i < docFields.length; i++) {
        Document doc = new Document();
        doc.add(Field.Text(field, docFields[i]));
        writer.addDocument(doc);
      }
      writer.close();
      searcher = new IndexSearcher(directory);
    }
  
    private String[] docFields = {
      "w1 w2 w3 w4 w5",
      "w1 w3 w2 w3",
      ""
    };
  
    public final String field = "field";
  
    public Term makeTerm(String text) {return new Term(field, text);}
  
    public SpanTermQuery makeSpanTermQuery(String text) {
      return new SpanTermQuery(makeTerm(text));
    }
  
    public void testSpanNearOrdered02() throws Exception {
      SpanTermQuery w1 = makeSpanTermQuery("w1");
      SpanTermQuery w2 = makeSpanTermQuery("w2");
      SpanTermQuery w3 = makeSpanTermQuery("w3");
      int slop = 0;
      boolean ordered = true;
      SpanNearQuery snq = new SpanNearQuery( new SpanQuery[]{w1,w2,w3}, slop, ordered);
      checkHits(snq, new int[] {0});
    }
  
    public void testSpanNearOrdered03() throws Exception {
      SpanTermQuery w1 = makeSpanTermQuery("w1");
      SpanTermQuery w2 = makeSpanTermQuery("w2");
      SpanTermQuery w3 = makeSpanTermQuery("w3");
      int slop = 1;
      boolean ordered = true;
      SpanNearQuery snq = new SpanNearQuery( new SpanQuery[]{w1,w2,w3}, slop, ordered);
      checkHits(snq, new int[] {0,1});
    }
  
    private void checkHits(Query query, int[] results) throws IOException {
      Hits hits = searcher.search(query);
  
      Set correct = new TreeSet();
      for (int i = 0; i < results.length; i++) {
        correct.add(new Integer(results[i]));
      }
  
      Set actual = new TreeSet();
      for (int i = 0; i < hits.length(); i++) {
        actual.add(new Integer(hits.id(i)));
      }
  
      assertEquals(query.toString(field), correct, actual);
    }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to