: 700ms. The problem is, we are using geofiltering and that is happening *
: before* the queries, so we have to geofilter on the 1B docs to restrict our
: set of docs first, and then do the query on a name field. But it seems that

        ...

: I've looked at the "cache=false" param, and the "cost=" param, but that's
: not going to help much because we still have to do the filtering. (We
: *will* use
: "cache=false" to avoid the overhead of caching queries that will very
: rarely be the same.)
: 
: Is there any way to indicate a filter query should happen *after* the other
: results? The other fq on source restricts the docset somewhat, but

that's what the "cost" param does, it tels Solr the order to evaluate the 
filters, and won't bother asking a filter with cost "50" to evalaute a doc 
that a filter with cost "10" has already ruled out.

One thing you may be overlooking is this little bit of juicy goodness...

http://wiki.apache.org/solr/CommonQueryParameters#Caching_of_filters

>> As an additional feature for very high cost filters, if cache=false and 
>> cost>=100 and the query implements the PostFilter interface, a 
>> Collector will be requested from that query and used to filter 
>> documents only after they have matched the main query and all other 
>> filter queries.  

...at the moment only frange implements PostFilter, but maybe using that 
as a model you could patch geofilt to implement it?

hell: couldn't you rewrite your fq={!geofilt ...} to be an fq={!frange 
...}geodist(...) w/o any code changes?


-Hoss

Reply via email to