2013-04-26 39 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 
相關問題