So I did this..
define_index do
indexes user.username, :as => :author
indexes subject, :as => :subject
indexes content, :as => :content
has created_at, updated_at
has user(:id), :as => :author
has 'RADIANS(lat)', :as => :latitude, :type => :float
has 'RADIANS(lng)',:as => :longitude, :type => :float
set_property :latitude_attr => :latitude
set_property :longitude_attr => :longitude
end
Same for my Store model.
define_index do
indexes :name, :sortable => true
indexes :description, :as => :description
indexes :city, :as => :city
indexes :state, :as => :state
indexes :country, :as => :country
has created_at, updated_at, city, name
has 'RADIANS(lat)', :as => :latitude, :type => :float
has 'RADIANS(lng)',:as => :longitude, :type => :float
set_property :latitude_attr => :latitude
set_property :longitude_attr => :longitude
end
Still doesn't return anything.
On May 31, 5:46 pm, Pat Allan <[email protected]> wrote:
> This is because, with more than one model, TS doesn't have a reference point
> for attributes, and so doesn't try to guess what your lat/lon attributes are.
> If you explicitly add :latitude_attr => :latitude, :longitude_attr =>
> :longitude to your ThinkingSphinx.search call, that should make it work.
>
> Cheers
>
> --
> Pat
>
> On 01/06/2010, at 10:41 AM, badnaam wrote:
>
> > OK, my get_radian method was the problem, I was sending it the wrong
> > parameters.
> > instead of ..
>
> > l = (Geokit::Geocoders::GoogleGeocoder.geocode 'xxxxx').ll
> > la = Address.get_radian(l[0], l[1])
>
> > it should be
> > l = (Geokit::Geocoders::GoogleGeocoder.geocode 'xxxxx')
> > la = Address.get_radian(l.lat, l.lng)
>
> > My apologies for the silly mistake!
>
> > So now it works. But I have another problem.
>
> > I am using geo search on two models Store and Article
>
> > When I do this..
>
> > Article.search(:geo => ll, :with => {"@geodist" => 0.00..(20 *
> > 1609.344)})..it works
> > Store.search(:geo => ll, :with => {"@geodist" => 0.00..(20 *
> > 1609.344)})..it works
> > ThinkingSphinx.search ("lorem") works too.
> > ThinkingSphinx.search(:geo => ll, :with => {"@geodist" => 0.00..(20 *
> > 1609.344)}, :classes => [Article]) or ThinkingSphinx.search(:geo =>
> > ll, :with => {"@geodist" => 0.00..(20 * 1609.344)}. :classes =>
> > [Store])...works too!
>
> > But.
> > ThinkingSphinx.search(:geo => ll, :with => {"@geodist" => 0.00..(20 *
> > 1609.344)}) or ThinkingSphinx.search(:geo => ll, :with => {"@geodist"
> > => 0.00..(20 * 1609.344)}. :classes => [Store, Article])..does not
> > work.
>
> > Any reason?
>
> > Thanks
>
> > On May 31, 9:42 am, badnaam <[email protected]> wrote:
> >> Could this be happening because lat and lng is stored in a polymorphic
> >> association? Perhaps the address pluralization issue is causing
> >> problems internally? Strange thing is that without the @geodist option
> >> it does product results. Is there a log somewhere that can shed more
> >> light?
>
> >> Thanks!
>
> >> On May 31, 12:47 am, badnaam <[email protected]> wrote:
>
> >>> I tried that still no result. strange.
>
> >>> On May 30, 11:33 pm, Pat Allan <[email protected]> wrote:
>
> >>>> I'm not sure if it matters, but try changing your set_property values to
> >>>> symbols instead of strings. Although really, you shouldn't need them,
> >>>> since you're using standard attribute names.
>
> >>>> Have you restarted Sphinx (and reindexed) since adding the lat/lng
> >>>> attributes?
>
> >>>> --
> >>>> Pat
>
> >>>> On 31/05/2010, at 4:30 PM, badnaam wrote:
>
> >>>>> define_index do
> >>>>> indexes :name, :sortable => true
>
> >>>>> indexes address.city, :as => :city
>
> >>>>> has created_at, updated_at
>
> >>>>> has 'RADIANS(addresses.lat)', :as
> >>>>> => :latitude, :type => :float
> >>>>> has 'RADIANS(addresses.lng)',:as => :longitude, :type
> >>>>> => :float
>
> >>>>> set_property :latitude_attr => "latitude"
> >>>>> set_property :longitude_attr => "longitude"
>
> >>>>> end
>
> >>>>> On May 30, 5:38 pm, Pat Allan <[email protected]> wrote:
> >>>>>> What does your define_index block look like in your Store model?
>
> >>>>>> --
> >>>>>> Pat
>
> >>>>>> On 31/05/2010, at 6:53 AM, badnaam wrote:
>
> >>>>>>> I am trying to do a proximity search like..
>
> >>>>>>> l = (Geokit::Geocoders::GoogleGeocoder.geocode 'xxxxx').ll
>
> >>>>>>> la = Address.get_radian(l[0], l[1])
>
> >>>>>>> def self.get_radian(lat, lng)
> >>>>>>> return [(lat / 180.0) * Math::PI, (lng / 180.0) * Math::PI]
> >>>>>>> end
>
> >>>>>>> Store.search("green", :geo => la, :with => {"@geodist" =>
> >>>>>>> 0.0..50_000.0})
>
> >>>>>>> This returns no results, I know it should return some records, and it
> >>>>>>> does if I take the @geodist out, what am I doing wrong here?
>
> >>>>>>> Thanks
>
> >>>>>>> --
> >>>>>>> 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
> >>>>>>> athttp://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
> >>>>> athttp://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
> > athttp://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.