我使用gem sunspot_solr实现了搜索。我想在搜索结果中添加链接,以便能够按字母顺序和其他参数过滤搜索。 我的控制器是
class SearchController < SuperSiteController
def index
@sunspot_search = Sunspot.search User, Post do |query|
query.keywords @search_query
query.paginate(:page => params[:page], :per_page => 30)
end
@posts = @sunspot_search.results
end
我希望我可以在您的搜索中过滤旧的,最近的和按字母排序的顺序已经完成。我没有在文档中找到任何关于此的内容。
之前有没有人使用此类搜索,如果有,您是否知道这样做的最佳做法?
答案 0 :(得分:0)
我认为您的目标是根据文档的属性(数据字段)来排序结果。
例如,要按Post
对created_at
模型的结果进行排序,您必须将此字段添加到app/models/post.rb
中的索引定义中,如下所示:
class Post < ActiveRecord::Base
searchable do
...
time :created_at
...
end
end
然后在你SearchController
中按如下方式对结果进行排序:
class SearchController < SuperSiteController
def index
Post.search do
fulltext @search_query
paginate(:page => params[:page], :per_page => 30)
order_by :created_at, :desc #:desc for descending, :asc for ascending
end
@posts = @sunspot_search.results
end
为了按字母顺序排序结果,您只需将字段添加到索引定义中,如上所述,使用文本函数而不是时间,并使用order_by
中的SearchController
。