2013-04-26 36 views

回答

1

要做到这样的事情,你需要得到你的手脏有位SQL的。有一些依赖于你使用什么数据库拼接命令......首先,这里是PostgreSQL的一个例子:

has "array_to_string(array_remove(array_agg(CASE WHEN values.type_id = 1 THEN values.id ELSE NULL END CASE), NULL), ',')", 
    :as => :first_value_ids, :type => :integer, :multi => true 

在MySQL中,它可能看起来更像是这样的:

has "GROUP_CONCAT((CASE WHEN values.type_id = 1 THEN values.id ELSE NULL END CASE) SEPARATOR ',')", 
    :as => :first_value_ids, :type => :integer, :multi => true 

如果你还没有使用Thinking Sphinx v3,那么选项应该变成:as => :first_value_ids, :type => :multi

这些查询尚未经过测试,我建议您确认它们是否正常工作,但理论是正确的。

另外,如果你不是在一个正常的方式索引定义使用值协会其他地方,你需要确保有一个与你的索引定义中的以下联接:

join values 
相关问题