如何使用 sunspot 仅搜索已批准的文章
How to search only approved articles using sunspot
我有一个具有默认状态 "Awaiting" 的文章模型,在我的文章模型中我有:
scope :awaiting, -> {where(status: "Awaiting") }
scope :approved, -> {where(status: "Approved") }
scope :rejected, -> {where(status: "Rejected")}
为了只允许搜索已批准的文章,我的文章模型中有这个:
searchable do
text :title
string :status
end
这是我的搜索控制器
def search
@search = Sunspot.search(Article) do
fulltext params[:query]
with(:status, "Approved")
order_by :score, :desc
paginate(page: params[:page], per_page: 10)
end
@articles = @search.results
respond_to do |format|
format.html { render :action => "search" }
end
end
但是当我尝试搜索任何内容时,这将没有结果,这是为什么?
如果您的模型在添加 Sunspot 之前已经存在,您将需要使用 bundle exec rake sunspot:solr:reindex
创建索引。
以后的更新应该会自动添加到索引中。
我有一个具有默认状态 "Awaiting" 的文章模型,在我的文章模型中我有:
scope :awaiting, -> {where(status: "Awaiting") }
scope :approved, -> {where(status: "Approved") }
scope :rejected, -> {where(status: "Rejected")}
为了只允许搜索已批准的文章,我的文章模型中有这个:
searchable do
text :title
string :status
end
这是我的搜索控制器
def search
@search = Sunspot.search(Article) do
fulltext params[:query]
with(:status, "Approved")
order_by :score, :desc
paginate(page: params[:page], per_page: 10)
end
@articles = @search.results
respond_to do |format|
format.html { render :action => "search" }
end
end
但是当我尝试搜索任何内容时,这将没有结果,这是为什么?
如果您的模型在添加 Sunspot 之前已经存在,您将需要使用 bundle exec rake sunspot:solr:reindex
创建索引。
以后的更新应该会自动添加到索引中。