【问题标题】:Can't reindex with sunspot / solr in rails app - Error: Severe errors in solr configuration无法在 rails 应用程序中使用 sunspot / solr 重新索引 - 错误:solr 配置中的严重错误
【发布时间】:2012-03-14 09:34:27
【问题描述】:

好的,我有一个简单的 Rails 应用程序,现在我正在尝试实现 sunspot 的搜索功能。但是,在我使用 rails g sunspot_rails:install 生成配置文件之后,在我启动服务器并且它在我的 rails app-dir 中创建了 solr-dir 并且我运行 bundle exec rake sunspot:solr:reindex I得到以下跟踪:

cakism@saraswati:~/railscode/calendar$ bundle exec rake sunspot:solr:reindex --trace
** Invoke sunspot:solr:reindex (first_time)
** Invoke sunspot:reindex (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute sunspot:reindex
Skipping progress bar: for progress reporting, add gem 'progress_bar' to your Gemfile
rake aborted!
RSolr::Error::Http - 500 Internal Server Error
Error: Severe errors in solr configuration.

Check your log files for more detailed information on what may be wrong.

If you want solr to continue after configuration errors, change:

 <abortOnConfigurationError>false</abortOnConfigurationError>

in null

-------------------------------------------------------------

Request Data: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><query>type:Event</query></delete>"

Backtrace: /var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:230:in `adapt_response'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:167:in `execute'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:161:in `send_and_receive'
(eval):2:in `post'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:67:in `update'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:131:in `delete_by_query'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/indexer.rb:55:in `remove_all'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `each'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session_proxy/abstract_session_proxy.rb:11:in `remove_all'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:230:in `adapt_response'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:167:in `execute'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:161:in `send_and_receive'
(eval):2:in `post'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:67:in `update'
/var/lib/gems/1.8/gems/rsolr-1.0.7/lib/rsolr/client.rb:131:in `delete_by_query'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/indexer.rb:55:in `remove_all'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `each'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session.rb:181:in `remove_all'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/session_proxy/abstract_session_proxy.rb:11:in `remove_all'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot.rb:464:in `remove_all'
/var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/searchable.rb:178:in `solr_remove_all_from_index'
/var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/searchable.rb:197:in `solr_reindex'
/var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/tasks.rb:54
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/class_set.rb:16:in `each'
/var/lib/gems/1.8/gems/sunspot-1.3.0/lib/sunspot/class_set.rb:16:in `each'
/var/lib/gems/1.8/gems/sunspot_rails-1.3.0/lib/sunspot/rails/tasks.rb:53
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `execute'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `invoke_prerequisites'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `top_level'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `run'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/var/lib/gems/1.8/gems/rake-0.9.2.2/bin/rake:33
/var/lib/gems/1.8/bin/rake:19:in `load'
/var/lib/gems/1.8/bin/rake:19
Tasks: TOP => sunspot:solr:reindex => sunspot:reindex

我对此特别好奇:

If you want solr to continue after configuration errors, change:

 <abortOnConfigurationError>false</abortOnConfigurationError>

in null

为什么会显示为空?与我有相同问题的其他帖子已指定 solr/conf/solrconfig.xml,而且,当我将其更改为 false 时,没有其他任何反应。

如果我从我的模型中删除可搜索块,我不会收到任何错误(但我想那是因为它不会尝试做任何事情)

我通过 XML 验证器运行了配置文件,它说它的起始标签名称错误,位于 2

我在这里开始感到绝望,所以非常感谢任何帮助!

【问题讨论】:

  • 我遇到了类似的问题 你有没有解决过这个问题?感谢您的帮助
  • 我也遇到了同样的问题。你解决了吗?

标签: ruby-on-rails solr sunspot


【解决方案1】:

我遇到了一个非常相似的问题并解决了它

  • 停止所有正在运行的 solr 进程
  • 删除 solr 文件夹
  • 关闭/重新启动计算机
  • gem 卸载所有相关的 gems
  • 捆绑安装
  • 启动 solr
  • 重新索引 solr

【讨论】:

  • 只需删除 ./solr 目录(整个文件夹,而不仅仅是内容)即可为我修复它。
  • 在启动 solr 之前添加 step rails generate sunspot_rails:install,并保留旧的 solr 文件以防您需要一些旧配置,您的解决方案有效并救了我!谢谢
  • 哦,至少在我的情况下不需要重新启动计算机。
  • @foz,感谢您为我指明了正确的方向。删除 solr 文件夹是最简单的解决方案。
【解决方案2】:

它偶尔发生在我身上。在我的情况下,这是 solr(不是太阳黑子)问题

试着去

http://localhost:8982/solr/admin

or http://localhost:8983/solr/admin

or http://[your.domain]:8983/solr/admin

(取决于你使用的环境)

看看你在 solr web server 下有什么错误

我看到了 java 错误消息并通过删除索引目录并重新启动 solr 来修复它

它开始按预期运行

希望对你有帮助

【讨论】:

    【解决方案3】:

    或者您可以重新安装 gem。这对我有用。

    【讨论】:

      【解决方案4】:

      这是一种简单的方法(不需要弄乱宝石或重新启动计算机):

      rake sunspot:solr:stop
      

      如果您修改了架构,请将site_root/solr/conf/schema.xml 的内容复制到剪贴板

      接下来,删除site_root/solr处的整个solr文件夹

      现在运行:

      rake sunspot:solr:start
      

      此命令将创建并重新填充已删除的 solr 文件夹。

      如果您在上面复制了 schema.xml,请再次打开 schema.xml,选择所有内容,然后复制剪贴板中的内容。保存文件。

      现在运行:

      bundle exec rake sunspot:solr:reindex
      

      【讨论】:

        【解决方案5】:

        更具体地说,我找到了问题的原因,希望这对任何想知道发生了什么的人有所帮助

        首先,我删除了 solr/data 文件夹。馊主意。这导致了 cakism 所描述的错误。

        重启、删除 solr 文件夹等都无济于事。仅仅因为有一个 Solr 服务器实例正在运行,即使使用 sunspot:solr:stop 也不会停止。您必须通过以下方式杀死该实例:

        rake sunspot:solr:stop # stop server
        ps -A | grep solr      # you'll see the [PID] of the solr server
        kill [PID]             # replace with the [PID] from above to completely kill the solr instance
        

        之后,您可以继续删除 solr 文件夹并再次启动服务器

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,最后我得到了 config/database.yml 的数据库名称错误,而且我检查了 sunspot.yml,这个文件也有错误的配置,比如 ip 地址。我修改了这两个文件,然后它就开始工作了。

          【讨论】:

            【解决方案7】:

            对我来说,turn off/restart the computer 有很大的依赖关系(无法重新启动),并且从上面不起作用(我没有尝试重新启动)。所以,我的工作解决方案是

            1. 进入应用根目录。
            2. 使用ps aux | grep solr找到solr process ID
            3. stop solr process using kill -9 4313 # 对我来说 4313 是 solr process id
            4. 在暂存时启动 solr rake sunspot:solr:start RAILS_ENV=staging

            5. 使用rake sunspot:solr:reindex RAILS_ENV=staging重新索引solr

            就是这样。

            注意:根据需要更换环境

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-08-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-04-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多