Упорядочение по нескольким столбцам в Sunspot? - PullRequest
1 голос
/ 20 ноября 2011

Решено

Я хочу, чтобы мои поля :price и :purchase_date были упорядочены вместе в моем поисковом индексе.Так что это даст самую настоящую дату, а затем самую низкую цену следующей даты.Как это сделать?

Я думаю, что есть ошибка при выполнении:

order_by :purchase_date, :desc
order_by :price,:asc

по сравнению с:

order_by(:purchase_date, :desc)
order_by(:price,:asc)

Мой готовый код выглядит так:

class SearchController < ApplicationController

  def index
    @search = UserPrice.search do
      fulltext params[:search]
      paginate(:per_page => 5, :page => params[:page])
      facet :business_retail_store_id, :business_online_store_id
      order_by(:purchase_date, :desc) 
      order_by(:price,:asc)
    end
    @user_prices = @search.results
  end
end

1 Ответ

8 голосов
/ 20 ноября 2011
UserPrice.order(:by => [:price,:purchase_date])

UserPrice.order("price DESC, purchase_date DESC")

См .:

http://guides.rubyonrails.org/active_record_querying.html

http://m.onkey.org/active-record-query-interface


Вот пример с сайта Sunspot:

Post.search do
  fulltext 'best pizza'
  with :blog_id, 1
  with(:published_at).less_than Time.now
  order_by :price, :desc           # descending order , check Documentation link below
  order_by :published_at, :desc    # descending order , check Documentation link below
  paginate :page => 2, :per_page => 15
  facet :category_ids, :author_id
end

Документация Sunspot гласит:

order_by (field_name, direction = nil) Укажите порядок, в котором должны возвращаться результаты. Этот метод может вызываться несколько раз;приоритет будет в указанном порядке.

См .:

http://outoftime.github.com/sunspot/

http://outoftime.github.com/sunspot/docs/index.html

...