lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrzej Bialecki>
Subject Re: Pre-filtering for expensive query
Date Sat, 30 Aug 2008 19:14:20 GMT
Matt Ronge wrote:
> Hi all,
> I am working on implementing a new Query, Weight and Scorer that is 
> expensive to run. I'd like to limit the number of documents I run this 
> query on by first building a candidate set of documents with a boolean 
> query. Once I have that candidate set, I was hoping I could build a 
> filter off of it, and issue that along with my expensive query. However, 
> after reading the code I see that filtering is done during the search, 
> and not before hand. So my initial boolean query won't help in limiting 
> the number of documents scored by my expensive query.
>  Has anyone done any work into restricting the set of docs that a query 
> operates on?
> Or should I just implement something myself in a custom scorer?

I think you can use a FilteredQuery in a BooleanClause. This may be 
faster than the filtering code in the Searcher, because the evaluation 
is done during scoring and not afterwards. FilteredQuery internally 
makes use of skipTo(), which should help to limit the number of 
evaluated docs.

Best regards,
Andrzej Bialecki     <><
  ___. ___ ___ ___ _ _   __________________________________
[__ || __|__/|__||\/|  Information Retrieval, Semantic Web
___|||__||  \|  ||  |  Embedded Unix, System Integration  Contact: info at sigram dot com

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message