Great ! Thank you so much, i get it worked :D

2012/8/4 Pat Allan <[email protected]>

> Answered on Stack Overflow. Let us know how you go.
>
> Cheers
>
> --
> Pat
>
> On 04/08/2012, at 3:03 PM, deneuxa wrote:
>
> > I've post my question here:
> >
> http://stackoverflow.com/questions/11809195/complex-search-with-thinking-sphinx
> >
> > Really need you help guys!
> > And thank you so much Pat for such a great gem !
> >
> > Here my question too:
> > -------------------
> >
> > I'd like to do a complex search with thinking sphinx:
> >
> > Search for users which:
> >
> > -> live in a city (city_id attribute)
> >
> > -> or has hability to move to a city (mobile_cities association)
> >
> > -> or live at a maximum distance from a lat/long point, the maximum
> distance is different for each user and is set in a mobility_distance
> attribute.
> >
> > For now I did that with 3 differents search, I volontary set a big
> per_page number, then i merge the 3 results on a single array, an then
> paginate this array :
> >
> > #users living in the @city
> > search_set_living = search_set.merge({:city_id => @city.id })
> > users_living =  User.search :with => search_set_living.dup,
> >                                 :page => 1, :per_page => 1000
> >
> > #users declaring hability to move to the @city
> > search_set_mobile = search_set.merge({:mobile_cities_ids => @city.id })
> > users_mobile =  User.search :with => search_set_mobile.dup,:page => 1,
> :per_page => 1000
> >
> > #users living at a maximum distance from the origin point(custom
> distance for each user, max 30km)
> > search_set_around = search_set.merge({"@geodist" => 0.0..30_000.0})
> > users_around =  User.search :geo => [@search_latitude * Math::PI / 180 ,
> @search_longitude * Math::PI / 180],
> >                                   :with => search_set_around.dup,
> >                                   :page => 1, :per_page => 1000
> > users_around_filtered = users_around.dup.delete_if{|user|
> (user.mobility_distance * 1000 )< user.sphinx_attributes['@geodist'] }
> >
> >
> > #merge the 3 results in a array
> > all_users =  (users_mobile.flatten + users_around_filtered.flatten).uniq
> >
> > #look for facets and paginate the array
> > @facets = User.facets :with => {:user_id => all_users.map(&:id)}
> > @users_to_display =  all_users.paginate(:page => params[:page],
> :per_page => 10)
> > This is working fine but i'm not satisfied: -performance are not so
> good, -I want the ability to sort on multiple attributes like this :order
> => "created_at DESC, @relevance DESC"
> >
> > I want to do the exact same search but in a single sphinx's search. I
> know that I should use the "OR Logic with Attribute Filters" from the docs
> but I don't know how to mix it with a geo_search call... I really have no
> idea how to do that, can you guys help me ?
> >
> > Many thanks,
> >
> >
> >
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "Thinking Sphinx" group.
> > To view this discussion on the web visit
> https://groups.google.com/d/msg/thinking-sphinx/-/Kk7PkpXm4nkJ.
> > 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.
>
>
>
> --
> 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.
>
>

-- 
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