Ruby on rails rails中的Sunspot solr需要帮助来执行一些查询
我的rails应用程序中有一个模型用户和列表。用户有许多列表,列表属于用户。我在用户表中也有一个属性名评级。我想要的是在列表模型中搜索关键字,并根据用户模型的评级属性对其排序 这就是我在清单模型中所做的Ruby on rails rails中的Sunspot solr需要帮助来执行一些查询,ruby-on-rails,solr,sunspot,Ruby On Rails,Solr,Sunspot,我的rails应用程序中有一个模型用户和列表。用户有许多列表,列表属于用户。我在用户表中也有一个属性名评级。我想要的是在列表模型中搜索关键字,并根据用户模型的评级属性对其排序 这就是我在清单模型中所做的 searchable do text :title, :default_boost => 3 text :description, :default_boost => 2 integer :category_id, :references =>
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
您需要将关键字和评级属性添加到listingsearachable方法中
class Listing < ActiveRecord::Base
belongs_to :user
searchable do
text :keyword
integer :rating { user.rating }
end
end
有关更多示例,请参见
看看你的代码,你需要改变你的搜索方法
double :user do
user.rating
end
到
对于您的评级,您将其定义为:user do…end when应该是:rating do…endHi Symana,非常感谢您的帮助。现在,我确切地知道我错过了什么。取而代之的是integer:rating{user.rating},我必须执行integer:rating do user.rating end,以防有人也在搜索它——
double :user do
user.rating
end
double :rating do
user.rating
end