在 rails 4 中实施通用搜索

Implementing Universal search in rails 4

我有一个 rails 4 应用程序,其中包含多个模型和视图页面。我的应用程序的应用程序布局包含一个搜索栏。但它目前处于非活动状态。搜索栏的目的是让用户在所有模型中搜索输入的关键字,基本上使其成为全局搜索。有没有gem可以进行万能搜索的?或者必须通过 sql 查询手动完成? 我可以看到在其视图页面上实现对特定模型的搜索的方法。但我希望它一次搜索所有模型。我该怎么办?

Sunspot 是 gem 在 Rails 应用中添加搜索最常用的应用之一。

索引看起来像这样:

class Post < ActiveRecord::Base
  searchable do
    text :title, :body
    text :comments do
      comments.map { |comment| comment.body }
    end
    integer :blog_id
    integer :author_id
    integer :category_ids, :multiple => true
    time :published_at
    string :sort_title do
      title.downcase.gsub(/^(an?|the)\b/, '')
    end
  end
end

并搜索:

Post.search do
  fulltext 'best pizza'
  with :blog_id, 1
  with(:published_at).less_than Time.now
  order_by :published_at, :desc
  paginate :page => 2, :per_page => 15
  facet :category_ids, :author_id
end

我认为你的情况最好的方法是使用 ElasticSearch。提供了一个简洁的集成 gem here。该页面上提供了指向文档的链接。

一个好的方法是使用 gem 'searchkick' 它使用弹性搜索。

Searchkick 资源: https://github.com/ankane/searchkick https://github.com/ankane/searchkick#advanced