lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Cowan <co...@aconex.com>
Subject Re: Unique results in BooleanQuery
Date Wed, 17 Dec 2008 05:37:15 GMT
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-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message