Indeed, StandardAnalyzer removing the pluses, so analyse 'c++' to 'c'.
QueryParser include Term that been analysed.
And BooleanQuery include Term that hasn't been analysed.
I think this is the difference between they.
2008/9/4 Ian Lea <[EMAIL PROTECTED]>
> Have a look at the index with Luke to see what has actually been
> indexed. StandardAnalyzer may well be removing the pluses, or you may
> need to escape them. And watch out for case - Visual != visual in
> term query land.
>
>
> --
> Ian.
>
>
> On Thu, Sep 4, 2008 at 9:46 AM, bogdan71 <[EMAIL PROTECTED]> wrote:
> >
> > 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]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>