You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by JensBurkhardt <je...@web.de> on 2008/02/29 16:46:51 UTC

MultiFieldQueryParser - BooleanClause.Occur

Hey everybody,

I read that it's possible to generate a query like:

(title:term1 OR author:term1) AND (title:term2 OR author:term2)

and so on. I also read that BooleanClause.Occur should help me handle this
problem.
But i have to admit that i totally don't understand how to use it.
If someone can explain or has a link to an explanation, this would be
terrific

Thanks and best regards

Jens Burkhardt
-- 
View this message in context: http://www.nabble.com/MultiFieldQueryParser---BooleanClause.Occur-tp15761243p15761243.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: MultiFieldQueryParser - BooleanClause.Occur

Posted by JensBurkhardt <je...@web.de>.
Hey,

Thanks a lot! Everything works pretty well :-) .

Greetings
Jens


Donna L Gresh wrote:
> 
> Paul-
> Thanks (that was one of my ulterior motives for answering the question; I 
> figured if there was something inefficient or unnecessary about my 
> approach, I'd hear about it :) )
> 
> Donna Gresh
> 
> 
> Paul Elschot <pa...@xs4all.nl> wrote on 02/29/2008 01:42:57 PM:
> 
>> Op Friday 29 February 2008 18:04:47 schreef Donna L Gresh:
>> > I believe something like the following will do what you want:
>> >
>> > QueryParser parserTitle = new QueryParser("title", analyzer);
>> > QueryParser parserAuthor = new QueryParser("author", analyzer);
>> >
>> > BooleanQuery overallquery = new BooleanQuery();
>> >
>> > BolleanQuery firstQuery = new BooleanQuery();
>> > Query q1= parserTitle.parse(term1);
>> > Query q2= parserAuthor.parse(term1);
>> > firstQuery.add(q1, BooleanClause.Occur.SHOULD); //should is like an
>> > OR firstQuery.add(q2, BooleanClause.Occur.SHOULD);
>> >
>> > BolleanQuery secondQuery = new BooleanQuery();
>> > Query q3= parserTitle.parse(term2);
>> > Query q4= parserAuthor.parse(term2);
>> > secondQuery.add(q3, BooleanClause.Occur.SHOULD);
>> > secondQuery.add(q4, BooleanClause.Occur.SHOULD);
>> >
>> > overallquery.add(firstQuery, BooleanClause.Occur.MUST); //must is
>> > like an AND
>> > overallquery.add(secondQuery, BooleanClause.Occur.MUST):
>> 
>> There is no need for a QueryParser in this case when using a
>> TermQuery instead of a Query for q1, q2, q3 and q4:
>> 
>> TermQuery q1 = new TermQuery(new Term("title", "term1"));
>> 
>> Regards,
>> Paul Elschot
>> 
>> 
>> >
>> > Donna  Gresh
>> >
>> > JensBurkhardt <je...@web.de> wrote on 02/29/2008 10:46:51 AM:
>> > > Hey everybody,
>> > >
>> > > I read that it's possible to generate a query like:
>> > >
>> > > (title:term1 OR author:term1) AND (title:term2 OR author:term2)
>> > >
>> > > and so on. I also read that BooleanClause.Occur should help me
>> > > handle
>> >
>> > this
>> >
>> > > problem.
>> > > But i have to admit that i totally don't understand how to use it.
>> > > If someone can explain or has a link to an explanation, this would
>> > > be terrific
>> > >
>> > > Thanks and best regards
>> > >
>> > > Jens Burkhardt
>> > > --
>> > > View this message in context: http://www.nabble.
>> > > com/MultiFieldQueryParser---BooleanClause.Occur-tp15761243p15761243
>> > >.html Sent from the Lucene - Java Users mailing list archive at
>> > > Nabble.com.
>> > >
>> > >
>> > > -------------------------------------------------------------------
>> > >-- To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> > > For additional commands, e-mail: java-user-help@lucene.apache.org
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>> For additional commands, e-mail: java-user-help@lucene.apache.org
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/MultiFieldQueryParser---BooleanClause.Occur-tp15761243p15799934.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: MultiFieldQueryParser - BooleanClause.Occur

Posted by Donna L Gresh <gr...@us.ibm.com>.
Paul-
Thanks (that was one of my ulterior motives for answering the question; I 
figured if there was something inefficient or unnecessary about my 
approach, I'd hear about it :) )

Donna Gresh


Paul Elschot <pa...@xs4all.nl> wrote on 02/29/2008 01:42:57 PM:

> Op Friday 29 February 2008 18:04:47 schreef Donna L Gresh:
> > I believe something like the following will do what you want:
> >
> > QueryParser parserTitle = new QueryParser("title", analyzer);
> > QueryParser parserAuthor = new QueryParser("author", analyzer);
> >
> > BooleanQuery overallquery = new BooleanQuery();
> >
> > BolleanQuery firstQuery = new BooleanQuery();
> > Query q1= parserTitle.parse(term1);
> > Query q2= parserAuthor.parse(term1);
> > firstQuery.add(q1, BooleanClause.Occur.SHOULD); //should is like an
> > OR firstQuery.add(q2, BooleanClause.Occur.SHOULD);
> >
> > BolleanQuery secondQuery = new BooleanQuery();
> > Query q3= parserTitle.parse(term2);
> > Query q4= parserAuthor.parse(term2);
> > secondQuery.add(q3, BooleanClause.Occur.SHOULD);
> > secondQuery.add(q4, BooleanClause.Occur.SHOULD);
> >
> > overallquery.add(firstQuery, BooleanClause.Occur.MUST); //must is
> > like an AND
> > overallquery.add(secondQuery, BooleanClause.Occur.MUST):
> 
> There is no need for a QueryParser in this case when using a
> TermQuery instead of a Query for q1, q2, q3 and q4:
> 
> TermQuery q1 = new TermQuery(new Term("title", "term1"));
> 
> Regards,
> Paul Elschot
> 
> 
> >
> > Donna  Gresh
> >
> > JensBurkhardt <je...@web.de> wrote on 02/29/2008 10:46:51 AM:
> > > Hey everybody,
> > >
> > > I read that it's possible to generate a query like:
> > >
> > > (title:term1 OR author:term1) AND (title:term2 OR author:term2)
> > >
> > > and so on. I also read that BooleanClause.Occur should help me
> > > handle
> >
> > this
> >
> > > problem.
> > > But i have to admit that i totally don't understand how to use it.
> > > If someone can explain or has a link to an explanation, this would
> > > be terrific
> > >
> > > Thanks and best regards
> > >
> > > Jens Burkhardt
> > > --
> > > View this message in context: http://www.nabble.
> > > com/MultiFieldQueryParser---BooleanClause.Occur-tp15761243p15761243
> > >.html Sent from the Lucene - Java Users mailing list archive at
> > > Nabble.com.
> > >
> > >
> > > -------------------------------------------------------------------
> > >-- To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> > > For additional commands, e-mail: java-user-help@lucene.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
> 

Re: MultiFieldQueryParser - BooleanClause.Occur

Posted by Paul Elschot <pa...@xs4all.nl>.
Op Friday 29 February 2008 18:04:47 schreef Donna L Gresh:
> I believe something like the following will do what you want:
>
> QueryParser parserTitle = new QueryParser("title", analyzer);
> QueryParser parserAuthor = new QueryParser("author", analyzer);
>
> BooleanQuery overallquery = new BooleanQuery();
>
> BolleanQuery firstQuery = new BooleanQuery();
> Query q1= parserTitle.parse(term1);
> Query q2= parserAuthor.parse(term1);
> firstQuery.add(q1, BooleanClause.Occur.SHOULD); //should is like an
> OR firstQuery.add(q2, BooleanClause.Occur.SHOULD);
>
> BolleanQuery secondQuery = new BooleanQuery();
> Query q3= parserTitle.parse(term2);
> Query q4= parserAuthor.parse(term2);
> secondQuery.add(q3, BooleanClause.Occur.SHOULD);
> secondQuery.add(q4, BooleanClause.Occur.SHOULD);
>
> overallquery.add(firstQuery, BooleanClause.Occur.MUST); //must is
> like an AND
> overallquery.add(secondQuery, BooleanClause.Occur.MUST):

There is no need for a QueryParser in this case when using a
TermQuery instead of a Query for q1, q2, q3 and q4:

TermQuery q1 = new TermQuery(new Term("title", "term1"));

Regards,
Paul Elschot


>
> Donna  Gresh
>
> JensBurkhardt <je...@web.de> wrote on 02/29/2008 10:46:51 AM:
> > Hey everybody,
> >
> > I read that it's possible to generate a query like:
> >
> > (title:term1 OR author:term1) AND (title:term2 OR author:term2)
> >
> > and so on. I also read that BooleanClause.Occur should help me
> > handle
>
> this
>
> > problem.
> > But i have to admit that i totally don't understand how to use it.
> > If someone can explain or has a link to an explanation, this would
> > be terrific
> >
> > Thanks and best regards
> >
> > Jens Burkhardt
> > --
> > View this message in context: http://www.nabble.
> > com/MultiFieldQueryParser---BooleanClause.Occur-tp15761243p15761243
> >.html Sent from the Lucene - Java Users mailing list archive at
> > Nabble.com.
> >
> >
> > -------------------------------------------------------------------
> >-- To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> > For additional commands, e-mail: java-user-help@lucene.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Re: MultiFieldQueryParser - BooleanClause.Occur

Posted by Donna L Gresh <gr...@us.ibm.com>.
I believe something like the following will do what you want:

QueryParser parserTitle = new QueryParser("title", analyzer);
QueryParser parserAuthor = new QueryParser("author", analyzer);

BooleanQuery overallquery = new BooleanQuery();

BolleanQuery firstQuery = new BooleanQuery();
Query q1= parserTitle.parse(term1);
Query q2= parserAuthor.parse(term1);
firstQuery.add(q1, BooleanClause.Occur.SHOULD); //should is like an OR
firstQuery.add(q2, BooleanClause.Occur.SHOULD); 

BolleanQuery secondQuery = new BooleanQuery();
Query q3= parserTitle.parse(term2);
Query q4= parserAuthor.parse(term2);
secondQuery.add(q3, BooleanClause.Occur.SHOULD);
secondQuery.add(q4, BooleanClause.Occur.SHOULD);

overallquery.add(firstQuery, BooleanClause.Occur.MUST); //must is like an 
AND
overallquery.add(secondQuery, BooleanClause.Occur.MUST):

Donna  Gresh



JensBurkhardt <je...@web.de> wrote on 02/29/2008 10:46:51 AM:

> 
> Hey everybody,
> 
> I read that it's possible to generate a query like:
> 
> (title:term1 OR author:term1) AND (title:term2 OR author:term2)
> 
> and so on. I also read that BooleanClause.Occur should help me handle 
this
> problem.
> But i have to admit that i totally don't understand how to use it.
> If someone can explain or has a link to an explanation, this would be
> terrific
> 
> Thanks and best regards
> 
> Jens Burkhardt
> -- 
> View this message in context: http://www.nabble.
> com/MultiFieldQueryParser---BooleanClause.Occur-tp15761243p15761243.html
> Sent from the Lucene - Java Users mailing list archive at Nabble.com.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>