【问题标题】:Rails5: filtering with sunspot_solrRails5:使用 sunspot_solr 进行过滤
【发布时间】:2018-01-29 03:12:49
【问题描述】:

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

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

以前有没有人使用过这种类型的搜索,如果有,您知道这样做的最佳做法吗?

【问题讨论】:

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


    【解决方案1】:

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

    为了按字母顺序排列结果,您只需将字段添加到索引定义中,如上所述,使用文本函数而不是时间,并在SearchController 中使用order_by

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 2011-05-25
      • 2011-08-25
      • 2012-07-25
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多