: My question is: Does it make sense to round these coordinates (a) while : indexing and/or (b) while querying to optimize cache hits? Our maximum : required resolution for geo queries is 1km and we can tolerate minor errors : so I could round to two decimal points for most of our queries.
: fq=_query_:"{!geofilt sfield=user.location_p pt=48.19815,16.3943 : > d=50.0}"&sfield=user.location_p&pt=48.1981,16.394 1) i don't see any reason for the _query_ hack ... this should be more efficient, and easier on the eyes... fq={!geofilt sfield=user.location_p pt=48.19815,16.3943 d=50.0} &sfield=user.location_p &pt=48.1981,16.394 2) as Erick mentioned, rounding will only do you good if you expect lots of queries from differnet users that when rounded, result in the same point 3) you might consider disabling the caching of your geofilt queries completley using the cache=false param. for {!geofilt} you should also be able to combine this with the "cost" localparm to take advantage of post-filtering, so that the distance calculations are only computed for documents that already match your query and other cached filters... http://wiki.apache.org/solr/CommonQueryParameters#Caching_of_filters http://searchhub.org/dev/2012/02/10/advanced-filter-caching-in-solr/ 4) something you also might wnat to consider (depending on your data and how much geo surface area you are dealing with) is along the lines of Erick's bounding box suggestion: use two filters; a "course" bounding box that you cache, and a precise geofilt using teh cache & cost params mentioned in #3. that way you have a fininite number of bounding box filters that will be cached and help quickly prune the total result set down, and then only for the results inside that bounding box will the distance calculations for your {!geofilt} filter be applied. (just make sure your bounding boxes overlap by at least as much as the max radius you search on, or you migh miss results when your search point is close to the edge of your grid) -Hoss