Rails,Sphinx(thinking_sphinx)和从关联中排序

时间:2011-07-05 11:10:51

标签: ruby-on-rails sphinx thinking-sphinx

我有3个型号:

统计信息(belongs_to:item)

  t.integer :skin_id
  t.integer :item_id
  t.integer :rating

商品(has_many:stats)

皮肤(has_many:stats)

使用 thinking_sphinx 我想为项目创建一个单独的索引,按以下方式排序:特定评级:skin_id

所以,我想:

  define_index 'sort_by_rate' do
    indexes stats(:rating), :as => :ratings, :sortable => true
  end

但是,这将为所有人生成一个索引:skin_id(在Stat模型中),而不是特定的索引。

换句话说,我需要收集所有项目,按Stat.rating排序,使用Stat.skin_id == 1(例如)。

以下是SQL的示例:

"SELECT `stats`.* FROM `stats` INNER JOIN `items` ON `items`.`id` = `stats`.`item_id` WHERE `stats`.`skin_id` = 1 ORDER BY rating DESC"

非常感谢ANy解决方案!

1 个答案:

答案 0 :(得分:0)

也许你应该在你的define_index块中:

has :skin_id

然后,在搜索时,按此过滤。像这样:

Item.search(:with => {:skin_id => skin.id}, :order_by => 'ratings ASC')