Hello,
I am experiencing a strange behaviour when trying to query the same thing
via
BooleanQuery vs. via the know-it-all QueryParser class. Precisely, the index
contains
the document:
"12,Visual C++,4.2" with the field layout: ID,name,version(thus, "12" is
the ID field, "Visual C++"
is the name field and "4.2" is the version field).
The search string is "Visual C++" for the name field.
The following test, using QueryParser, goes fine:
public final void testUsingQueryParser()
{
IndexSearcher recordSearcher;
Query q;
QueryParser parser = new QueryParser("name", new
StandardAnalyzer());
try
{
q = parser.parse("name:visual +name:c++");
Directory directory =
FSDirectory.getDirectory(<some_path_to_index>);
recordSearcher = new IndexSearcher(directory);
Hits h = recordSearcher.search(q);
assertEquals(1, h.length());
assertEquals(12, Integer.parseInt(h.doc(0).get("ID")));
}
catch(Exception exn)
{
fail("Exception occurred.");
}
}
But this one, using a BooleanQuery, fails.
public final void testUsingTermQuery()
{
IndexSearcher recordSearcher;
BooleanQuery bq = new BooleanQuery();
bq.add(new TermQuery(new Term("name", "visual")),
BooleanClause.Occur.SHOULD);
bq.add(new TermQuery(new Term("name", "c++")),
BooleanClause.Occur.MUST);
try
{
Directory directory =
FSDirectory.getDirectory(<some_path_to_index>);
recordSearcher = new IndexSearcher(directory);
Hits h = recordSearcher.search(bq);
assertEquals(1, h.length()); // fails, saying it
expects 0 !!!
assertEquals(12, Integer.parseInt(h.doc(0).get("ID")));
}
catch(Exception exn)
{
fail("Eexception occurred.");
}
}
Rewriting the BooleanQuery and taking toString() yields the same String
given to QueryParser.parse() in the first test. I am using Lucene 2.3.0. Can
somebody explain the difference ?
--
View this message in context:
http://www.nabble.com/QueryParser-vs.-BooleanQuery-tp19306087p19306087.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]