Sunspot Solr в рельсах нужна помощь для выполнения некоторых запросов - PullRequest
0 голосов
/ 05 января 2012

У меня есть модель User и Listing в моем приложении rails.Пользователь имеет много списков, и список принадлежит пользователю.У меня также есть рейтинг имени атрибута в пользовательской таблице.Я хочу найти ключевое слово в модели листинга и упорядочить его по атрибуту рейтинга модели пользователя.

Это то, что у меня в модели листинга

searchable do  
    text :title, :default_boost => 3  
    text :description, :default_boost => 2  
    integer :category_id, :references => Category  
    integer :subcategory_id, :references => Subcategory  
    string :zipcode  
    time :created_at  
        double :user do  
        user.rating  
    end  
end

И вот как япытаюсь найти

@search = Sunspot.search(Listing) do  
    keywords params[:q]  do   
        fields :title  
    end  
    order_by THIS IS WHERE I NEED HELP    
    paginate :page => params[:page], :per_page => 20  
end  

1 Ответ

1 голос
/ 05 января 2012

Вам потребуется добавить ключевое слово и атрибуты рейтинга в метод searachable для перечисления.

class Listing < ActiveRecord::Base
  belongs_to :user
  searchable do
    text :keyword
    integer :rating { user.rating }
  end
end

Тогда в вашем поисковом действии в вашем контроллере

Listing.search do
  fulltext params[:q]
  order_by :rating, :desc
end

См. http://sunspot.github.com/ для дополнительных примеров.

Глядя на свой код, вам нужно изменить метод поиска

double :user do
  user.rating
end

до

double :rating do
  user.rating
end
...