Не удается переиндексировать с помощью sunspot / solr в приложении rails - Ошибка: серьезные ошибки в конфигурации solr

Итак, у меня есть простое приложение rails, и теперь я пытаюсь реализовать солнечное пятно для возможностей поиска. Однако, после того, как я сгенерировал файл конфигурации с rails g sunspot_rails:install, и после того, как я запустил сервер, и он сделал solr-dir в моем app-dir rails, и я запускаю 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<-1 5 <-2 6 <90%. Однако, даже если я удаляю строки, которые затем дают действительный XML, перезапускает solr и пытаюсь переиндексировать, я все равно получаю ту же ошибку.

Я начинаю отчаяться здесь, поэтому любая помощь очень ценится!

7 ответов

Решение

У меня была очень похожая проблема, и я решил ее

  • остановка всех запущенных процессов solr
  • удаление папки solr
  • выключить / перезагрузить компьютер
  • драгоценный камень удалить все связанные драгоценные камни
  • комплектация
  • начать Solr
  • переиндекс солр

Это случалось со мной время от времени.. в моем случае это была солнечная (не солнечная) проблема

попытаться пойти в

http://localhost:8982/solr/admin

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

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

(в зависимости от того, какую среду вы используете)

чтобы увидеть, какая ошибка у вас под веб-сервером Solr

я увидел сообщение об ошибке java и исправил его, просто удалив каталог index и перезапустив solr

и он начал вести себя как ожидалось

надеюсь, это помогло

Или вы можете переустановить драгоценный камень. Это работает для меня.

Вот простой способ (не требует возиться с драгоценными камнями или перезагружать компьютер):

rake sunspot:solr:stop

Если вы изменили схему, скопируйте содержимое site_root/solr/conf/schema.xml в буфер обмена

Затем удалите всю папку Solr в site_root/solr

Теперь запустите:

rake sunspot:solr:start

Эта команда создаст и повторно заполнит удаленную папку Solr.

Если вы скопировали schema.xml выше, снова откройте schema.xml, выберите все и скопируйте содержимое буфера обмена. Сохраните файл.

Теперь запустите:

bundle exec rake sunspot:solr:reindex

Более конкретно, я выяснил причину своей проблемы, надеюсь, это поможет любым душам, которые задавались вопросом, что случилось

Сначала я удалил папку 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 и снова запустить сервер.

Для меня было так много зависимости от turn off/restart the computer(Не было возможности перезагрузить) и не работает ничего сверху (я не пытаюсь с перезагрузкой). Итак, мое рабочее решение было

  1. Перейдите в корневой каталог приложения.
  2. с помощью ps aux | grep solr найти решение process ID
  3. Остановить Solr процесс с помощью kill -9 4313 # для меня 4313 был идентификатор процесса solr
  4. начать Solr на постановке rake sunspot:solr:start RAILS_ENV=staging

  5. переиндексировать Solr с помощью rake sunspot:solr:reindex RAILS_ENV=staging

Вот и все.

NB: заменить среду в соответствии с вашими потребностями

Я столкнулся с той же проблемой, и, наконец, я получил config/database.yml имеет неправильное имя базы данных, и, чем я проверил sunspot.yml, этот файл также имеет неправильную конфигурацию, как IP-адрес. Я изменяю оба файла, чем он начинает работать.

Другие вопросы по тегам