思考Sphinx命令if属性存在否则忽略

时间:2012-07-05 02:04:13

标签: ruby-on-rails sorting activerecord grouping thinking-sphinx

如果多个索引模型的验证级别需要按其验证级别进行排序。

但我也有几个没有验证级别的模型。

ThinkingSphinx.search @search.q, :order => 'class_crc ASC, @relevance DESC, verification_level DESC', :page => page, :limit => limit, :classes => @search.types_as_models

问题是我可以通过verify_level对具有该属性的模型进行排名,但在没有verify_level的模型上出现错误

index ground_core,ground_delta,user_core,user_delta: sort-by attribute 'verification_level' not found

示例播放器define_index with verification_level

    define_index do
      indexes [first_name, last_name], :as => :name, :sortable => true    
      where "state = 1"
      has created_at, updated_at, verification_level
      set_property :delta => ThinkingSphinx::Deltas::ResqueDelta
    end

示例用户define_index,不带verify_level

    define_index do
      indexes [first_name, last_name], :as => :name, :sortable => true    
      has created_at, updated_at
      set_property :delta => ThinkingSphinx::Deltas::ResqueDelta
    end

有没有办法对它在模型上进行排序,并在不存在时忽略?

1 个答案:

答案 0 :(得分:2)

我的解决方案是在不需要它的模型上伪造验证级别,方法是在define_index块中添加它

has '0', :as => :verification_level, :type => :integer