www.pudn.com > lucene.rar > SpanQueryTest.java
/*
* Created on 2005-12-31
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package examples.ch;
import java.io.IOException;
import org.apache.lucene.*;
import org.apache.lucene.analysis.*;
import org.apache.lucene.document.*;
import org.apache.lucene.index.*;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.search.spans.SpanTermQuery;
import org.apache.lucene.search.spans.Spans;
import org.apache.lucene.store.*;
import junit.framework.TestCase;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class SpanQueryTest extends TestCase {
/*
* @see TestCase#setUp()
*/
private RAMDirectory directory;
private IndexSearcher searcher;
private IndexReader reader;
private SpanTermQuery quick;
private SpanTermQuery brown;
private SpanTermQuery red;
private SpanTermQuery fox;
private SpanTermQuery lazy;
private SpanTermQuery sleepy;
private SpanTermQuery dog;
private SpanTermQuery cat;
private Analyzer analyzer;
protected void setUp() throws Exception {
// directory=new RAMDirectory();
super.setUp();
directory=new RAMDirectory();
analyzer =new WhitespaceAnalyzer();
IndexWriter writer=new IndexWriter(directory,analyzer,true);
Document doc=new Document();
doc.add(Field.Text("f","the quick brown fox jumps over the lazy dog"));
writer.addDocument(doc);
doc=new Document();
doc.add(Field.Text("f","the quick red fox jumps over the sleepy cat"));
writer.addDocument(doc);
writer.close();
searcher =new IndexSearcher(directory);
reader = IndexReader.open(directory);
quick =new SpanTermQuery(new Term("f","quick"));
brown =new SpanTermQuery(new Term("f","brown"));
red=new SpanTermQuery(new Term("f","red"));
fox =new SpanTermQuery(new Term("f","fox"));
lazy =new SpanTermQuery(new Term("f","lazy"));
sleepy=new SpanTermQuery(new Term("f","sleepy"));
// quick =new SpanTermQuery(new Term("f","quick"));
dog =new SpanTermQuery(new Term("f","dog"));
cat=new SpanTermQuery(new Term("f","cat"));
}
private void assertOnlyBrownFox(Query query) throws IOException{
Hits hits=searcher.search(query);
assertEquals(1,hits.length());
// assertEquals("wrong doc",0,hits.id(0));
}
private void assertBothFoxes(Query query) throws IOException{
Hits hits=searcher.search(query);
assertEquals(2,hits.length());
// assertEquals("wrong doc",0,hits.id(0));
}
private void assertNoMatches(Query query) throws IOException{
Hits hits=searcher.search(query);
assertEquals(0,hits.length());
// assertEquals("wrong doc",0,hits.id(0));
}
public void testSpanTermQuery() throws IOException{
assertOnlyBrownFox(brown);
//dumpSpans(brown);
}
/**
* @param brown2
* @throws IOException
*/
private void dumpSpans(SpanQuery query) throws IOException{
Spans spans=query.getSpans(reader);
System.out.println(query+ ":");
int numSpans=0;
Hits hits=searcher.search(query);
float[] scores=new float[2];
for(int i=0;i