Hard to explain.. :) The search terms are user-entered - look at my
screen shot: http://zoran.name/ty_form.png

Assume
  - hamburg has 100 hotels
  - berlin has 1 hotel
  - distance between cities: 289 km
  - range for geodist: 280 km

A user search for "Berlin" by clicking on the "Hotel" button. He will
get only the 1 hotel in Berlin and probably hotels in Hamburg which
have "Berlin" in their names. That's right but I want to show him
other hotels in range as well because he clicked on "Hotel".

I should mention that I first check the user input for city names. If
the search string contains a city name, it will be used for geodist.

Something like this:

geo_city = City.search params[:user_input]
if geo_city.size == 1 && !geo_city[0].id.to_s.blank? && !
geo_city[0].lat.to_s.blank? && !geo_city[0].lng.to_s.blank?
    city_lat = (geo_city[0].lat / 360.0) * Math::PI * 2
    city_long = (geo_city[0].lng / 360.0) * Math::PI * 2
    city_radius = geo_city[0].radius.to_f * 1000.0

    @results = Tip.search params[:user_input], :conditions =>
{:theme_name => params[:theme]},
        :geo => [city_lat, city_long],
        :with => {'@geodist' => Range.new(0.0, radius)},
        :order => "@weight, @geodist ASC",
        :per_page => 50
end


Cheers

Zoran

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