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

Reply via email to