Hi Anatoly

What I'm thinking is that you make Location the searchable model - so  
have all references to users from within the Location define_index  
block.

And then, do a grouped search - by user_id (which should be set up as  
an attribute), and sort the overall results by distance.

Location.search(
   :geo            => [[email protected], @ny.lng],
   :group_function => :attr,
   :group_by       => "user_id",
   :order          => "@geodist ASC, @relevance DESC"
)

Add in :without => {:user_id => @user.id} to exclude the focused user,  
if needed. Now, I've no idea how nicely geo-location searching plays  
with grouping, but it's worth a shot, right? And, should it all go to  
plan, each location will have a distinct user.

@locations.each_with_geodist do |location, distance|
   # location.user
end

Hope this helps.

Cheers

-- 
Pat

On 17/05/2009, at 8:52 PM, anatoly wrote:

>
> Another distance question.  As far as I can tell there is no clean
> solution for this, so wondering what suggestions may come out.
>
> I have a User model which has many Locations.
> So a User may have a Location in New York and a Location in London.
>
> How would I go about doing a search for other Users within X distance
> of either New York or London, and then order the results by distance?
>
> One way of solving for this would be to do to separate searches,
> combine the results, and order by distance.  However, since there can
> be other search criteria, the combined results would have to be sorted
> by weight and then distance.
>
> I am not sure if this will work right, and not exactly sure how to
> even do that.
>
> Any other suggestions?
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to