Hi All,

This is more of an FYI for those wanting to filter and sort by distance, and
have the values returned in the result set after determining a way to do
this with existing code.

Using solr 4.0 an example query would contain the following parameters:

/select?

q=stevenage^0.0
+_val_:"ghhsin(6371,geohash(52.0274,-0.4952),location)"^1.0

Make the boost on all parts of the query other than the ghhsin distance
value function 0 ,and 1 on the function, this is so that the score is then
equal to the distance. (52.0274,-0.4952) here is the query point and
'location' is the geohash field to search against



sort=score asc

basically sort by distance asc (closest first)



fq={!sfilt%20fl=location}&pt=52.0274,-0.4952&d=30

This is the spatial filter to limit the necessary distance calculations.



fl=*,score

Return all fields (if required) but include the score (which contains the
distance calculation)


Does anyone know if it's possible to return the distance and score
separately?  I know there has been a patch to sort by value function, but
how can one return the values from this?

Cheers,
Dan


On Fri, Sep 17, 2010 at 2:45 PM, dan sutton <danbsut...@gmail.com> wrote:

> Hi,
>
> I'm trying to filter and sort by distance with this URL:
>
>
> http://localhost:8080/solr/select/?q=*:*&fq={!sfilt%20fl=loc_lat_lon}&pt=52.02694,-0.49567&d=2&sort={!func}hsin(52.02694,-0.49567,loc_lat_lon_0_d,%20loc_lat_lon_1_d,3963.205)<http://localhost:8080/solr/select/?q=*:*&fq=%7B%21sfilt%20fl=loc_lat_lon%7D&pt=52.02694,-0.49567&d=2&sort=%7B%21func%7Dhsin%2852.02694,-0.49567,loc_lat_lon_0_d,%20loc_lat_lon_1_d,3963.205%29>asc
>
> Filtering is fine but it's failing in parsing the sort with :
>
> "The request sent by the client was syntactically incorrect (can not sort
> on undefined field or function: {!func}(52.02694,-0.49567,loc_lat_lon_0_d,
> loc_lat_lon_1_d, 3963.205))."*
>
> *I'm using the solr/lucene trunk to try this out ... does anyone know what
> is wrong with the syntax?
>
> Additionally am I able to return the distance sort values e.g. with param
> fl ? ... else am I going to have to either write my own component (which
> would also look up the filtered cached values rather than re-calculating
> distance) or use an alternative like localsolr ?
>
> Dan
>

Reply via email to