我希望我的搜索引擎能够根据某种案件类型的案件数量来命令律师。律师完成某种类型案件的人数最多,他的排名将更高。lawyer.rb
has_many :cases
has_many :case_types, :through => :cases
define_index do
indexes case_types.name, :as => :case_types
has case_types(:id), :as => :case_types_id
has "SUM(case_types)", :as => :case_type_count #this line gives an error, as my lawyer table does't have a case_type column, also, I need to count DISTINCT case_types
end
在我的
search_controller.rb
中,我想做类似的事情,建议是案例类型的名称@lawyers = Lawyer.search params[:suggestion], :order => "@case_type_count DESC"
我走错路了吗?我应该考虑一种不太面向Sphinx的方法吗?问题是我需要对@lawyers做一个each_with_geodist,所以我需要通过Sphinx搜索来找我的律师。
最佳答案
将以下内容添加到define_index中:
has "COUNT(case_types.id)", :as => :case_type_count, :type => :integer
join case_types
然后按case_count检索:
Lawyer.search("", :order => "case_type_count desc")
我发现读取
development.sphinx.conf
中的sql代码很有用,这使我可以查看所生成的列名称。