lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jie Yang <jyang_w...@yahoo.co.uk>
Subject Re: Query Filters on term A in query "A AND (B OR C OR D)"
Date Thu, 13 Nov 2003 21:07:36 GMT
 --- Erik Hatcher <erik@ehatchersolutions.com> wrote:
> On Thursday, November 13, 2003, at 03:28  PM, Dan
> Quaroni wrote:
> > To my knowledge the answer is No, lucene performs
> each query 
> > separately and
> > then performs the joins after it has all the
> results.  This is 
> > actually a
> > rather serious problem when it comes to searches
> in large indexes 
> > where a
> > single field is very important but has a very low
> uniqueness.
> >
> > For example, if you were searching for a telephone
> number for a 
> > company in a
> > lucene index of all of the companies in the US and
> you knew the state, 
> > city,
> > and name, the query would come up being something
> like:
> >
> > name:Bob's Discount Furniture AND state:California
> AND city:San Diego
> >
> > Now, that query is going to retrieve EVERY Bob's
> discount furniture, 
> > EVERY
> > company in California, and EVERY city in San Diego
> and then join them. 
> >  That
> > makes the memory requirements for this query far
> higher than they 
> > really
> > need to be.
> 
> If you know ahead of time that queries of this type
> would be made, then 
> it could be "optimized" by doing the query that has
> the fewest hits 
> first, then using a QueryFilter for successive
> queries to narrow it to 
> the precise criteria.  Granted this doesn't help
> when the queries can 
> be entered free-form via QueryParser.
> 
> 	Erik

Erik, Just to make sure I understand you right, In an
example query:  ZipCode:CA10927 AND Gender:Male 

Sure I know ZipCode returns fewer results, do you mean
I build a filter 

QueryFilter x = new QueryFilter("ZipCode", "CA10927",
..);

Then build the query

Query y = QueryParser.parse("Gender:Male", "Gender",
..);

Then run it

Hit result = searcher.search(y, x);

I tried that, and the performance does not improve.
when I trace down the code, I found searcher object
searches on both ZipCode and Gender for terms
information (expesive) before processing on the
filters.

Am I doing something wrong, or you mean something
else? I would really appriciate if you can post an
example to this list, or send a copy of to my mail
address at jyang_work@yahoo.co.uk.

Kind Regards
 

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

________________________________________________________________________
Want to chat instantly with your online friends?  Get the FREE Yahoo!
Messenger http://mail.messenger.yahoo.co.uk

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


Mime
View raw message