代码之家  ›  专栏  ›  技术社区  ›  smcdrc

思考狮身人面像通过联想分类

  •  0
  • smcdrc  · 技术社区  · 14 年前

    我正在尝试对“思考的狮身人面像搜索”的搜索结果进行排序。要排序的列位于关联表中:

    class Membership < ActiveRecord::Base
    
      define_index do
       indexes :title
       indexes user.first_name, :as => :first_name
       indexes user.last_name, :as => :last_name
    
       has :organization_id, :active
       set_property :delta => true
     end
    
     # begin
     sphinx_scope(:by_organization) do |org|
       {:with => {:organization_id => org.id, :active => true}}
     end
    
     sphinx_scope(:sort_by_name) do 
       {:order => 'last_name, first_name'}
     end
    
    end
    

    然后我这样调用代码:

    search_results = Membership.by_organization(Organization.current).sort_by_name.search((search_value || ""), :page => (page || 1), :per_page => 10)
    

    如果我不使用按名称排序,那么我会得到正确的返回值数目。一旦我添加了排序方法,就不会得到任何行。

    我还尝试将其传递到搜索方法中,结果相同。

    1 回复  |  直到 14 年前
        1
  •  1
  •   James Healy    14 年前

    1)要按字段排序,需要添加:Sortable=>true

    define_index do
      indexes :title
      indexes user.first_name, :as => :first_name, :sortable => true
      indexes user.last_name, :as => :last_name, :sortable => true
    
      has :organization_id, :active
      set_property :delta => true
    end
    

    2)您需要将排序方向添加到订单选项中。

    sphinx_scope(:sort_by_name) do 
      {:order => 'last_name ASC, first_name ASC'}
    end