我有一个 rails 4 应用程序,其中包含许多模型和视图页面。我的应用程序的应用程序布局包含一个搜索栏。但到目前为止,它处于非活动状态。搜索栏的目的是允许用户搜索输入的关键字的所有模型,基本上使其成为全局搜索。有没有做通用搜索的宝石?还是必须通过 sql 查询手动完成?我可以看到在其视图页面上实现对特定模型的搜索的方法。但我希望它一次搜索所有模型。我应该怎么做?
方法是使用ElasticSearch。这里提供了一个整洁的集成宝石。该页面上提供了指向文档的链接。
其中一个好方法是使用gem 'searchkick'
它使用Elasticsearch。
Searchkick的资源:https://github.com/ankane/searchkickhttps://github.com/ankane/searchkick#advanced
太阳黑子是在 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