On Nov 20, 2009, at 3:15 AM, Oliver Beattie wrote:

> Hi all,
> 
> I'm a relative newcomer to Solr, and I'm trying to use it in a project
> of mine. I need to do a function query (I believe) to filter the
> results so they are within a certain distance of a point. For this, I
> understand I should use something like sqedist or hsin, and from the
> documentation on the FunctionQuery page, I believe that the function
> is executed on every "row" (or "record", not sure what the proper term
> for this is). So, my question is threefold really; are those functions
> the ones I should be using to perform a search where distance is one
> of the criteria (there are others),

Short answer: yes.  Long answer:  I just committed those functions this week.  
I believe they are good, but feedback is encouraged.

> and if so, does Solr execute the
> query on every row (and again, if so, is there any way of preventing
> this [like subqueries, though I know they're not supported])?

You can use the frange capability to filter first.  See 
http://www.lucidimagination.com/blog/tag/frange/

Here's an example from a soon to be published article I'm writing:
http://localhost:8983/solr/select/?q=*:*&fq={!frange l=0 u=400}hsin(0.57, 
-1.3, lat_rad, lon_rad,  3963.205)

This should filter out all documents that are beyond 400 miles in distance from 
that point on a sphere (specified in radians, see also the rads() method)
          


> 
> Sorry if this is a little confusing… any help would be greatly appreciated :)

No worries, a lot of this spatial stuff is still being ironed out.  See 
https://issues.apache.org/jira/browse/SOLR-773 for the issue that is tracking 
all of the related issues.  The pieces are starting to come together and I'm 
pretty excited about it b/c not only will it bring native spatial support to 
Solr, it will also give Solr some exciting new general capabilities (sort by 
function, pseudo-fields, facet by function, etc.)

Reply via email to