- Fixed a bug that allowed queries to retrieve extra matches.

- Fixed indentation that was all messed up, and some spelling mistakes.


git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@149980 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Otis Gospodnetic 2003-05-01 00:40:41 +00:00
parent f2099419e3
commit f980ec23e5

View File

@ -80,7 +80,7 @@ public class TestPhrasePrefixQuery
{
public TestPhrasePrefixQuery(String name)
{
super(name);
super(name);
}
/**
@ -94,41 +94,49 @@ public class TestPhrasePrefixQuery
Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
Document doc4 = new Document();
doc1.add(Field.Text("body", "blueberry pie"));
doc2.add(Field.Text("body", "blueberry pizza"));
doc3.add(Field.Text("body", "blueberry chewing gum"));
doc4.add(Field.Text("body", "picadelly circus"));
Document doc4 = new Document();
Document doc5 = new Document();
doc1.add(Field.Text("body", "blueberry pie"));
doc2.add(Field.Text("body", "blueberry strudel"));
doc3.add(Field.Text("body", "blueberry pizza"));
doc4.add(Field.Text("body", "blueberry chewing gum"));
doc5.add(Field.Text("body", "piccadilly circus"));
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.addDocument(doc4);
writer.optimize();
writer.close();
writer.addDocument(doc5);
writer.optimize();
writer.close();
IndexSearcher searcher = new IndexSearcher(indexStore);
IndexSearcher searcher = new IndexSearcher(indexStore);
PhrasePrefixQuery query1 = new PhrasePrefixQuery();
PhrasePrefixQuery query2 = new PhrasePrefixQuery();
query1.add(new Term("body", "blueberry"));
query2.add(new Term("body", "strawberry"));
PhrasePrefixQuery query1 = new PhrasePrefixQuery();
PhrasePrefixQuery query2 = new PhrasePrefixQuery();
query1.add(new Term("body", "blueberry"));
query2.add(new Term("body", "strawberry"));
LinkedList termsWithPrefix = new LinkedList();
LinkedList termsWithPrefix = new LinkedList();
IndexReader ir = IndexReader.open(indexStore);
// this TermEnum gives "picadelly", "pie" and "pizza".
TermEnum te = ir.terms(new Term("body", "pi*"));
// this TermEnum gives "piccadilly", "pie" and "pizza".
String prefix = "pi";
TermEnum te = ir.terms(new Term("body", prefix + "*"));
do {
termsWithPrefix.add(te.term());
if (te.term().text().startsWith(prefix))
{
termsWithPrefix.add(te.term());
}
} while (te.next());
query1.add((Term[])termsWithPrefix.toArray(new Term[0]));
query2.add((Term[])termsWithPrefix.toArray(new Term[0]));
Hits result;
result = searcher.search(query1);
assertEquals(2, result.length());
query1.add((Term[])termsWithPrefix.toArray(new Term[0]));
query2.add((Term[])termsWithPrefix.toArray(new Term[0]));
result = searcher.search(query2);
assertEquals(0, result.length());
Hits result;
result = searcher.search(query1);
assertEquals(2, result.length());
result = searcher.search(query2);
assertEquals(0, result.length());
}
}