Hi Paul,

But will the q1 be run on the BooleanQuery q2 or q1 is just used for filtering? 
 


Regards,
Jay Malaluan





________________________________
From: Paul Cowan <co...@aconex.com>
To: java-user@lucene.apache.org
Sent: Wednesday, December 17, 2008 1:37:15 PM
Subject: Re: Unique results in BooleanQuery

Hi Jay,

> Anyone knowledgeable on how to get unique hits using the BooleanQuery?
> If I have 2 queries so the when the 1st query is processed then the 2nd
> query will not anymore return the same results from the 1st query. 

Do you mean you want to run two separate queries -- get all the results from 
query 1 first, then get the results which match query 2 but also DON'T match 
query 1?

e.g. search for "fruit:apple", get back x records
then search for "colour:blue", get back records with 'blue' as a colour but 
WITHOUT 'apple' as a fruit?

Do the first query as normal, then create a second BooleanQuery; add one clause 
for "colour:blue", Occur.MUST, and then add the query from the first search as 
a MUST_NOT.

Query q1 = new TermQuery(new Term("fruit", "apple"));
.... run query, get back all apples ...

BooleanQuery q2 = new BooleanQuery();
q2.add(new TermQuery(new Term("colour", "blue")), Occur.MUST);
q2.add(q1, Occur.MUST_NOT);
.... run query q2, get back all blue things that don't have apples ...

Cheers,

Paul

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


      

Reply via email to