在轨道中实现通用搜索 4.



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

相关内容

  • 没有找到相关文章