2

我正在尝试将 sunspot 与 mongoid 一起使用,但 sunspot 没有连接到 Solr。在尝试连接到 Solr 时,Rails 报告了以下错误。

Errno::ECONNREFUSED (Connection refused - connect(2))

bundle exec rake sunspot:solr:start用来运行 Solr,并且我已经确认 Solr 正在 config/sunspot.yml 中定义的开发端口 (8982) 上运行

当我Sunspot.config在 Rails 控制台中运行时,我看到:

   @properties={:url=>"http://127.0.0.1:8983/solr"}

然后我将开发/生产端口更改为 8984/8985,Solr 从新的开发端口(8984)开始,但 Rails 控制台中的 Sunspot.config 仍然返回http://127.0.0.1:8983/solr(8984 或 8985,这意味着它根本不读取 sunspot.yml )

我是否错过了 Rails 中 Sunspot 的一些初始化步骤?

我正在使用以下版本:

  • 红宝石 1.9.3
  • 导轨 (3.2.1)
  • 太阳黑子 (1.3.0)
  • sunspot_rails (1.3.0)
  • sunspot_mongoid (0.4.1)
4

3 回答 3

2

回答我自己的问题。实际上我的问题原来是 sunspot_mongoid,它在作为 gem 安装时不支持 rails,我必须将它作为 rails 插件添加到 thr rails 项目中,然后正确加载 config/sunspot.yml

于 2012-02-10T21:37:15.423 回答
0

我在尝试从控制台使用 sunspot_index_queue 时遇到了类似的问题,结果发现 sunspot 没有从 sunspot_rails 获得所需的配置(它从您的 sunspot.yml 获得)对您的 environment.rb 文件进行一些细微的修改应该可以做到诡计。这是我在我的情况下必须做的(如果有人从谷歌找到这个页面,请发布它):

<code>
SunspotConfig = Sunspot::Rails::Configuration.new
Sunspot.session = Sunspot::IndexQueue::SessionProxy.new(
  Sunspot::IndexQueue.new(
    :session => Sunspot::Session.new{|config| config.solr.url = "http://#{SunspotConfig.hostname}:#{SunspotConfig.port}/solr"}
  )
)
</code>

要在没有队列的情况下使用,本地线程代理应该会自动从您的 sunspot.yml 中恢复,因此您无需担心。如果您对 sunspot.yml 文件中的任何内容感兴趣,请尝试Sunspot::Configuration或代替。Sunspot::Rails::Configuration(记得实例化!)

于 2012-02-09T22:16:06.973 回答
0

您是否退出控制台,重新启动并检查?

于 2012-02-07T10:46:57.500 回答