Almost, but not quite... you need the options in your search call, not in your
index properties:
ThinkingSphinx.search(
:geo => ll,
:with => {"@geodist" => 0.00..(20 * 1609.344)},
:latitude_attr => :latitude,
:longitude_attr => :longitude
)
--
Pat
On 01/06/2010, at 11:01 AM, badnaam wrote:
> 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.
>
--
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.