1

我有表板、用户、联接和角色。joins 表定义用户与板的关联,以及用户在该板上的角色。我试图通过区分用户在每个板上的角色的方式一次获取所有用户的板,或者进行三个单独的调用以获取用户是特定角色的板。

在板模型中,我有:

  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')

第一个查询的问题是每个版块都有具有每个可能角色的用户,所以我得到了与用户关联的每个版块,而不是特定角色的版块。至于第二个,我不确定我是如何只将同一块板退回给我三次,但这就是正在发生的事情。

提前感谢您的任何帮助/提示。

4

1 回答 1

0

运行分组查询时,每组返回一个匹配结果。听起来每个组都返回了一个特定的板,因为该板具有三个角色。

我认为实际上不可能在单个查询中执行您想要执行的操作(即:将角色值限制为特定用户) - 因为 Sphinx 对这些关系一无所知。

抱歉,我无法提供更多帮助。

于 2009-07-17T04:31:04.953 回答