将SOLR/Lucene搜索与Rails应用程序集成 - 哪些宝石?提示?

Mar*_*kus 3 lucene integration gem solr ruby-on-rails

亲爱的程序员,有没有人经历过SOLR/Lucene的RoR集成?更详细:我为我的rails应用程序设置了solr/lucene的测试索引.我现在需要用solr搜索来交换我的搜索功能.

我想自动更新索引,而不是由应用程序触发(现在),所以不需要从应用程序中添加文档...我只需要将搜索字符串传递给solr,接收结果并将它们呈现在webapp.实现这一目标的最简单,最快捷的方法是什么?

你通常会使用哪些宝石进行SOLR/Lucene集成:solr-ruby的acts_as_solr rails插件似乎不再受支持了 - 你还会使用它吗?

因为我是一个真正的试验和错误学习的doer ;-),一个良好的集成教程和/或一些代码片段的提示如何与solr服务器通信可以帮助我很多.

亲切的问候,非常感谢!马库斯

Nic*_*zny 9

如今,您所描述的最佳选择是Sunspot,因为它易于使用的DSL和ActiveRecord挂钩.

另一个不错的选择是直接RSolr(Sunspot在后台使用),如果你更喜欢纯Ruby哈希的极简主义并编写你自己的ActiveRecord钩子.

这是Sunspot的两分钟教程:

的Gemfile

gem 'sunspot_rails'
Run Code Online (Sandbox Code Playgroud)

应用程序/模型/ post.rb

class Post < ActiveRecord::Base
  searchable do
    text :title
    text :body
  end
end
Run Code Online (Sandbox Code Playgroud)

从控制台索引模型的现有内容(还有可用的Rake任务):

Post.reindex
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ posts_controller.rb

class PostsController < ApplicationController
  def search
    @search = Post.search do
      keywords params[:q]
    end
    @posts = @search.results
  end
end
Run Code Online (Sandbox Code Playgroud)

应用程序/视图/职位/ search.html.erb

<h1>Search results</h1>
<%= render @posts %>
Run Code Online (Sandbox Code Playgroud)