2010-06-18 4 views
0

Я пытаюсь сортировать результаты поиска мышления_sphinx. Столбцы я хочу, чтобы отсортировать в связанных таблицах:Thinking_sphinx сортировка по ассоциациям

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) 

Если я не использую sort_by_name, то я получаю правильное число возвращается значения. Когда я добавлю метод сортировки, я не получаю строк.

Я также попытался передать его методу поиска с теми же результатами.

ответ

1

1) для сортировки на полях вам нужно добавить: сортируется => верно

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 
Смежные вопросы