rails中的太阳黑子solr需要帮助来执行一些查询

时间:2012-01-05 18:31:29

标签: ruby-on-rails solr sunspot

我的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 个答案:

答案 0 :(得分:1)

您需要将关键字和评级属性添加到列表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