我有一个带有多个模型和视图页面的rails 4应用程序。我的应用程序的应用程序布局包含一个搜索栏。但截至目前,它仍处于非活动状态。搜索栏的目的是允许用户在所有模型中搜索输入的关键字,基本上使其成为全局搜索。是否有任何宝石进行普遍搜索?或者它必须通过SQL查询手动完成? 我可以看到在其视图页面上实现搜索特定模型的方法。但我希望它能够立即搜索所有模型。我应该怎么做呢?
答案 0 :(得分:5)
我认为在您的情况下最好的方法是使用ElasticSearch。提供了一个整洁的集成宝石here。该页面提供了文档链接。
答案 1 :(得分:3)
Sunspot是在Rails应用中添加搜索最常用的gem之一。
索引看起来像这样:
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
答案 2 :(得分:3)
其中一个好方法是使用gem 'searchkick'
它使用elasticsearch。
Searchkick的资源: https://github.com/ankane/searchkick https://github.com/ankane/searchkick#advanced