1

Ruby on Rails 上の Sphinx について大まかな質問があります。

友達が書いた記事を検索したいとします。モデル構造は次のようになります。

User has_many users :through relationships
Article belongs_to User

私の質問は、ユーザーが記事を検索して友人が書いた記事だけを取得できるように、Sphinx でどのような構文を使用すればよいかということです。これをオンラインで見つけるのに苦労しています。ソリューションを実装する前に、これがどのように機能するかを把握したいと思います。

注: 解決策の 1 つは、フレンド ID の配列を用意し、:condition :with => {:id => array_of_friendIDs} を使用することだと思います。しかし、もっと効果的な方法があるのではないでしょうか?

4

1 に答える 1

1

あなたは基本的に正しいです:with。オプションを使用して、友人 ID の配列を組み立てて検索に渡す必要があります。ただし、そのリストを取得する方法は、特に Sphinx とは関係ありません。

friend_ids = current_user.users.pluck(:id)

@articles = Article.search(params['search_term'], :with => {:user_id => friend_ids})

を使用.pluckすると、そうでなければ多数の User オブジェクトのインスタンス化に費やされる時間を大幅に節約できます。必要なのはそれらの ID だけです。user_idSphinx の属性として設定したことを確認してください(ブロックhas user_id内で使用)。define_index

于 2013-02-25T05:39:07.360 に答える