2009-07-16 10 views
1

私はテーブルボード、ユーザー、結合、および役割を持っています。結合テーブルは、ユーザーがボードとの関連性、およびユーザーがそのボード上に持つ役割を定義します。私は、すべてのユーザーのボードを一度に取得して、ユーザーが各ボード上でどのような役割を果たしているかを区別したり、ユーザーを特定の役割を果たすボードを取得するために3回の呼び出しを試みたりしています。Thinking Sphinxですばらしいグループ化

define_index do 
    indexes :name 
    indexes description 

    has created_at 
    has users(:id), :as => :user 
    has joins.role_id, :as => :role 

    set_property :enable_star => true 
    set_property :min_infix_len => 1 
    end 

、私はこれに類似したクエリをしようとしてきた:ボードモデルで

私が持っている

Board.search(:with => {:user => some_user.id, :role => some_role.id}) 
Board.search(:with => {:user => some_user.id}, :group_function => :attr, :group_by => 'role') 

最初のクエリの問題点は、各ボードは、ユーザーが持っているということですそれぞれの可能な役割を持っているので、特定の役割のものではなく、ユーザーが関連しているすべてのボードを取得します。 2つ目は、同じボードだけが3回戻ってきたのかどうかは分かりませんが、それは起こっていることです。

ご協力いただきありがとうございます。

答えて

0

グループ化されたクエリを実行すると、グループごとにの一致結果が返されます。が返されます。このボードには3つの役割があるため、各グループごとに特定のボードが返されているようです。

Sphinxには関係性がないため、1つのクエリで実行したいこと(つまり、ロールの値を特定のユーザーに限定する)は実際にはできないと思います。

申し訳ありません、私はより多くの助けができません。

+0

返信いただきありがとうございました 現時点では、ちょっと混乱しているとは思いますが、現時点では動作していると思います。私はフォローアップの質問があると思います。複数の変数属性を作成することはできますか?おそらく、それらのリストではなく整数のペアです。 ジョインはIDを持っているので、私はボードのインデックスにjoinのidを付けることができますし、ボードの検索でwith:のsearch_for_idsを実行できます。おそらくすべての役割を果たすのに最適ではないかもしれませんが、ただ1つの役割では十分に機能します。 –

関連する問題