无法使用rails app中的sunspot / solr重新索引 – 错误:solr配置中出现严重错误

好的,所以我有一个简单的rails应用程序,现在我正在尝试为搜索function实现太阳黑子。 但是,在我使用rails g sunspot_rails生成配置文件之后:安装并在我启动服务器之后它已经在我的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: false in null ------------------------------------------------------------- Request Data: "type:Event" 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: false in null 

为什么会在null中说? 与我有相同问题的其他post指定了solr / conf / solrconfig.xml,并且当我将其更改为false时,没有其他任何事情发生。

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

我通过XMLvalidation器运行配置文件,它说它在2 <-1 5 <-2 6 <90%时起始标签名称不佳。 但是,即使我删除然后提供有效XML的行,重新启动solr,并尝试重新索引,我仍然会得到相同的错误。

我开始在这里绝望了,所以任何帮助都非常有用!

我遇到了一个非常类似的问题并通过解决了这个问题

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

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

试着去

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

(取决于您使用的环境)

看看你在solr web服务器下有什么错误

我看到java错误消息并修复它只需删除索引目录并重新启动solr

它开始表现得像预期的那样

希望它有所帮助

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

这是简单的方法( 不需要搞乱gem或重新启动计算机 ):

 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 

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

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

重新启动,删除solr文件夹等将无济于事。 只是因为有一个Solr服务器运行的实例,即使使用太阳黑子也不会停止: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文件夹并再次启动服务器

我面临同样的问题,最后我得到config / database.yml有错误的数据库名称,并且,我检查sunspot.yml,这个文件也有错误的配置,如IP地址。 我修改文件而不是开始工作。

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

  1. 转到应用程序根目录。
  2. 使用ps aux | grep solr ps aux | grep solr找到solr process ID
  3. 停止solr进程使用kill -9 4313 #对我来说4313是solr进程id
  4. 在staging rake sunspot:solr:start RAILS_ENV=staging sunspot上启动solr rake sunspot:solr:start RAILS_ENV=staging

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

而已。

注意: 根据您的需要更换环境