1

我有一个关于 Ruby on Rails 上的 Sphinx 的高级问题:

说我要搜索的是我朋友写的文章。模型结构将是:

User has_many users :through relationships
Article belongs_to User

我的问题是:我会在 Sphinx 上使用什么样的语法,以便用户搜索文章并只获取他朋友写的文章?我在网上找不到这个问题,我想在实施我的解决方案之前了解它是如何工作的。

注意:我怀疑一种解决方案是拥有一组朋友 ID,然后使用 :condition :with => {:id => array_of_friendIDs}。但也许有更有效的方法来做到这一点?

4

1 回答 1

1

您基本上是正确的 - 您将需要组装一组朋友 ID 并将其传递给搜索,使用该:with选项。不过,您获取该列表的方式与 Sphinx 并不特别相关。

friend_ids = current_user.users.pluck(:id)

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

使用.pluck将为您节省大量时间,否则这些时间将用于实例化一堆 User 对象 - 您只需要它们的 id。确保您已设置user_id为 Sphinx 的属性(has user_iddefine_index块中使用)。

于 2013-02-25T05:39:07.360 回答