Как вы сортируете, используя Thinking Sphinx on Rails 3?


Я пытаюсь выполнить простую сортировку, используя параметры, переданные моему контроллеру. Я следую за документацией на веб-сайте Searching & Thinking Sphinx и встречаю следующую ошибку. Что я делаю не так?

Следующий объект @ places является экземпляром класса think Sphinx.

 @places = Place.search(params[:q], :order => :created_at)

ThinkingSphinx::SphinxError (index place_core: sort-by attribute 'created_at' not found):
1 5

1 ответ:

Вам нужно добавить поля, по которым вы хотите выполнить поиск. Затем для сортировки по полю вам нужно отметить его как сортируемый в вашей модели, или вам нужно добавить атрибут в методе define_index, как описано здесь.

Для вашей модели, что-то вроде этого:

class Place < ActiveRecord::Base
  # ...

  define_index do
    # fields
    indexes subject, :sortable => true
    indexes content
    indexes author.name, :as => :author, :sortable => true

    # attributes
    has created_at
  end

  # ...
end

В этом примере субъект, автор и created_at сортируются.