如何使用ThinkingSphinx对多个模型进行地理搜索?

我有两个索引的模型用于搜索(用户和项目)。 我正在尝试跨模型进行地理搜索:

ThinkingSphinx::Search.search('keywords', :geo => [ degrees_to_radians(params[:lat].to_f), degrees_to_radians(params[:lon].to_f) ], )

但我只得到一个错误:

Sphinx Error: index item_core,item_delta,user_core,user_delta: unknown latitude attribute ''

单独搜索每个模型工作正常……但我不知道这里的问题是什么。 以下是索引:

用户索引:

 define_index do indexes [:first_name, :last_name], :as => :name indexes login indexes email indexes headline indexes description indexes business.name, :as => :business_name indexes [addresses.street_1, addresses.street_2, addresses.city, addresses.postal_code], :as => :address has created_at, :sortable => true has addresses.latitude, :as => :latitude, :type => :float has addresses.longitude, :as => :longitude, :type => :float set_property :delta => true end 

物品索引:

 define_index do indexes title, :sortable => true indexes description indexes [address.street_1, address.street_2, address.city, address.postal_code], :as => :address indexes images.title, :as => :image_titles indexes images.description, :as => :image_descriptions indexes categories(:name), :as => :category_names has price, :sortable => true has created_at, :sortable => true has address.latitude, :as => :latitude, :type => :float has address.longitude, :as => :longitude, :type => :float has categories(:id), :as => :category_ids where "`items`.`state` = 'for_sale'" set_property :delta => true end 

这是一个迟到的回应,但总比没有好,希望:

当您没有搜索特定模型时,Thinking Sphinx没有参考点来了解可用的属性,因此您需要明确告诉它使用的lat和long属性:

 ThinkingSphinx::Search.search('keywords', :geo => [ degrees_to_radians(params[:lat].to_f), degrees_to_radians(params[:lon].to_f) ], :latitude_attr => "latitude", :longitude_attr => "longitude" )