Rails5:使用sunspot_solr过滤

时间:2018-01-29 03:12:49

标签: ruby-on-rails sunspot sunspot-rails sunspot-solr

我使用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

我希望我可以在您的搜索中过滤旧的,最近的和按字母排序的顺序已经完成。我没有在文档中找到任何关于此的内容。

之前有没有人使用此类搜索,如果有,您是否知道这样做的最佳做法?

1 个答案:

答案 0 :(得分:0)

我认为您的目标是根据文档的属性(数据字段)来排序结果。 例如,要按Postcreated_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