不太多的模型搜索 - PG

时间:2014-10-23 13:50:36

标签: ruby-on-rails postgresql search

:用户has_many:书籍等。

我希望实现一个与书籍或用户相匹配的搜索,但由于书籍和用户密切相关,因此不太喜欢多类搜索。

基本上我想对 -

执行全文搜索
book.title
book.description
book.user.username
book.user.aboutuser

...并返回排名的图书对象。目前我正在玩文字。我是否正确地认为这不是真正的多类搜索?任何人都可以指出一个很好的资源来讨论如何进行查询吗?

2 个答案:

答案 0 :(得分:1)

我会在这里使用sunspot - 它使用Sorl,非常好的搜索引擎。

在你的gemfile中:

gem 'sunspot_rails'
gem 'sunspot_solr' # optional pre-packaged Solr distribution for use in development

在必需的捆绑后,您可以创建配置并启动solr deamon:

rails generate sunspot_rails:install
bundle exec rake sunspot:solr:start

在你的模特中:

  searchable do
    integer :rank
    text :title, :descritpion
    text :aboutuser do
      users.map { |user| user.aboutuser }
    end

    text :username do
      users.map { |user| user.username }
    end
  end

用法:

books = Book.search do
  fulltext 'my text'
  order_by :rank, :desc
end

只有减号是您需要在生产服务器上启动它 - 不应该使用rake sunspot:solr:start来完成。相反,你应该在(可能)Tomcat或其他Java应用服务器上正确部署。

答案 1 :(得分:1)

这取决于"大"是你的问题,数百或数百万条记录?后者最常见的搜索引擎是Solr或Sphinx(这里比较讨论的比较:Choosing a stand-alone full-text search server: Sphinx or SOLR?),它们都支持Rails。我亲自使用过Sphinx,但如果你没有大量记录,请尝试pg_search gem(另见本讨论:Any reason not use PostgreSQL's built-in full text search on Heroku?)。