在 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
我有一个 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