Rails 4:使用Sunspot和Solr进行搜索时出现问题

时间:2015-07-02 01:20:53

标签: ruby-on-rails ruby solr

我刚刚设置了Sunspot和Solr,为我的Rails应用程序提供了强大的搜索功能。

安装过程很简单,我完成了所有必需的基本操作:

添加宝石

gem 'sunspot_rails'
gem 'sunspot_solr'
gem 'progress_bar'

运行命令

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

该级别的一切都很好,我的文档也是正确创建的。

现在进行搜索,效果不佳。这是我在模型和控制器上做的:

Domain.rb

class Domain < ActiveRecord::Base
  searchable do
    text :name, stored: true
  end
end

HomeController.rb

class HomeController < ApplicationController
  def index
    @domains = Domain.search do
      fulltext params[:q], fields: [:name], highlight: true
      paginate page: params[:page], per_page: 12
    end
  end
end

我的实际数据是域名列表(例如,google.com,facebook.com等等)

  • 搜索goo时,它不会返回任何内容。
  • 搜索google.com时,会找到google.com

我意识到通过用fulltext包围*参数,它确实产生了与SELECT * FROM domains WHERE name LIKE '%:name%'类似的东西。

@domains = Domain.search do
  fulltext "*#{params[:q]}*", fields: [:name], highlight: true
  paginate page: params[:page], per_page: 12
end

但是,如果我搜索多个单词great pizza(希望找到例如great-super-giant-pizza.com),这不起作用。

我可能错过了Sunspot / Solr设置的一点。

有什么想法吗?

编辑

为了澄清这种情况,我甚至试图进行简单的搜索,例如:

Domain.search { fulltext 'great pizza' }

如示例所示。这是行不通的。 Sunspot / Solr实际上是在尝试找到与great pizza完全匹配的文本,而不是找到与这两个单词匹配的文本

0 个答案:

没有答案