开发者

Defining indexes for associated models with Thinking Sphinx

What is the proper way of defining indexes on associated models with following configuration?

I have model Locality with lat and lng attributes and associated models Profile and User

class User < ActiveRecord::Base
  has_one :user_profile

  define_index do
    # This doesn't work :(
    has "RADIANS(user_profiles.localities.lat)", :as => :lat, :type => :float
    has "RADIANS(user_profiles.localities.lng)", :as => :lng, :type => :float
  end
end

end

class UserProfile < ActiveRecord::Base
  belongs_to :user
  belongs_to :locality
end

class Locality < ActiveRecord::Base
  has_many :user_profiles
end

I need to define indexes for User model so I开发者_开发知识库 can perform geo-searches on it.

Thank you for the answers!


The problem is twofold:

  • Thinking Sphinx doesn't know that you want to join the user_profile and locality associations.
  • SQL snippets should be just that - standard SQL - so you can't chain associations within them.

The following should do the trick:

define_index do
  # force the join on the associations
  join user_profile.locality

  # normal SQL:
  has "RADIANS(localities.lat)", :as => :lat, :type => :float
  has "RADIANS(localities.lng)", :as => :lng, :type => :float
end

Claudio's point of using singular references within the SQL is not correct - within SQL, you want table names. But you do want the correct association references in the join call (hence they're singular there).

Cheers


Don't really know the exact solution but:

You have a typo:

has_one :user_profile

define_index do
    # This doesn't work :(
    has "RADIANS(user_profiles.localities.lat)", :as => :lat, :type => :float

You are using "user_profiles" for the attribute, it should not be plural, try changing it to: "user_profile".

I repeat, I don't know if you can navigate through associations for this case, but if you can, this should be a typo.

You can read here for more information: http://freelancing-god.github.com/ts/en/geosearching.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜