3

検索エンジンで、特定のケース タイプのケース数で弁護士を注文できるようにしたいと考えています。弁護士が特定の種類の事件を確定した回数が多いほど、弁護士のランクが高くなります。

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"

私は間違った方向に進んでいますか?スフィンクス指向の少ない方法を考えるべきですか? 問題は、@lawyers で each_with_geodist を実行する必要があるため、Sphinx 検索で弁護士を探す必要があることです。

4

1 に答える 1

2

以下を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コードを読むと便利です。

于 2012-06-20T13:51:21.380 に答える