Hi, Pat I've been using the stable version (0.9.5) of Thinking Sphinx. And after updating to the edge one the exception is gone. Distances are now retrieved from Sphinx :)
Now I can only guess why didn't it work the last time I was trying the edge version... Anyway, everything works now as I like. Thanks for helping, Pat. And thank you for the great plugin! :) Anton On Mar 21, 9:59 am, Pat Allan <[email protected]> wrote: > Hi Anton > > Sorry for the delay in getting back to you on this. How old is the > version of Thinking Sphinx that you're using? I've not been using > WillPaginate's Collection class for some time (Thinking Sphinx has > it's own now), and that'd be why the method doesn't exist. > > Mind you, if you're using a version of TS that's been around for the > last 6 months or so, then I'm going to be confused :) > > -- > Pat > > On 14/03/2009, at 10:46 AM, AST wrote: > > > > > Thank you, Jim. :with => {"@geodist" => 0.0..500.0} instead > > of :conditions made filtering work. > > > But there is still that exception if I try to use each_with_geodist > > function: > > > undefined method `each_with_geodist' for #<WillPaginate::Collection: > > 0x7fdffaca52d8> > > > I use :order => "@geodist ASC" parameter in search call. And sorting > > actually works! But there's no way to get to 'each_with_geodist' > > function to retrieve distances from Sphinx. Currently I calculate > > these distances in ruby. But that's not the wright way to do it. > > > Maybe there's some another trick that can make it work? > > > My current code looks like this: > > �...@location = Location.find @search.location_id > > lat, lon = @location.lat * Math::PI/180, @location.lon * Math::PI/ > > 180 > > > �...@ads = Ad.search( > > �[email protected], > > :conditions => @search.conditions, > > :per_page => @search.per_page, :page => params[:page], > > :geo => [lat, lon], > > :order => "@geodist ASC", > > :include => {:subcategory => :category}, > > :with => {"@geodist" => [email protected]_distance_in_meters} > > ) > > �...@dist = {} > > #[email protected]_with_geodist do |ad, dist| > > �...@dist[ad.id] = dist > > #end > > �...@distances = {} > > �[email protected] do |ad| > > �...@distances[ad.id] = @search.distance_from_to @location, > > ad.location > > end > > > Thanks. > > > Anton > > > On 13 Бер, 18:54, Jim Griswold <[email protected]> wrote: > >> I'm on sphinx 0.9.8.1 (r1533), TS 0.9.5, and I had similar > >> frustrations. > > >> It should work if you do :with => {"@geodist" => > >> -1000000000000000000000.0..20000000000000.0} as opposed > >> to :conditions > >> => ... > > >> Also, interestingly, each_with_geodist doesn't seem to yield with a > >> distance unless you filter on or order by @geodist. I'm guessing > >> that's what you'll be doing in almost every case, but perhaps worth > >> knowing. > > >> Hope that helps. > > >> Jim > > >> On Mar 12, 1:15 pm, AST <[email protected]> wrote: > > >>> Hi, I'm trying to use geo facilities of Sphinx. And am having two > >>> issues with it. > > >>> First, regular search (Model.search ...) works smoothly. No > >>> problems. > > >>> But when I try to make use of geo sorting or geo filtering, I see > >>> these: > > >>> 1. No way to get distances for each Ad. There is no such function as > >>> @ads.each_with_geodist, which is mentioned in the documentation. > > >>> 2. If I try to add filtering by @geodist attribute (... :conditions > >>> => {"@geodist" => > >>> -1000000000000000000000.0..20000000000000.0} ...) I > >>> get empty collection as a result. > > >>> Details: > >>> Model > > >>> class Ad < ActiveRecord::Base > >>> define_index do > >>> indexes title > >>> indexes description > >>> has 'RADIANS(lat)', :as => :lat, :type => :float > >>> has 'RADIANS(lon)', :as => :lon, :type => :float > >>> set_property :latitude_attr => 'lat' > >>> set_property :longitude_attr => 'lon' > >>> end > >>> end > > >>> Use > > >>> @ads = Ad.search params[:query], :geo => [params > >>> [:lat].to_f*Math::PI/180, params[:lon].to_f*Math::PI/180], \ > >>> :per_page => 50, :order => "@geodist ASC" > > >>> I've tried to run this code with different version of > >>> Sphinx(0.9.8.1, > >>> 0.9.9-rc1) and ThinkingSphinx(0.9.5, edge), but still no luck. > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
