使用Sunspot / Solr升级到Rails 4时出现的问题

时间:2013-07-24 21:42:09

标签: ruby-on-rails ruby solr sunspot

我最近将rails 3.2应用程序升级到4.0并将Ruby升级到2.0。我现在遇到运行太阳黑子的问题。它将正确启动但是当我导航到搜索页面时,太阳黑子正在处理它会引发以下错误。我环顾四周但找不到任何东西。

感谢您的帮助。

服务器错误

  

RSolr :: Error :: Http - 404 Not Found错误:未找到请求数据:   “FQ =类型%3AGear&安培;开始= 0&安培;行= 30&安培;小面=真安培; f.category_name_sms.facet.mincount = 1&安培; facet.field = category_name_sms&安培; facet.field = sub_category_name_sms&安培; facet.field = state_s&安培; facet.field = city_s&安培; facet.field = price_s&安培; f.sub_category_name_sms.facet.mincount = 1&安培; f.state_s.facet.mincount = 1&安培; f.city_s.facet.mincount = 1&安培; f.price_s.facet.mincount = 1&安培; q =%2A%3A%2A”   回溯:   /usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:268:in   adapt_response' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:175:in 执行”   /usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:161:in   send_and_receive_with_as_instrumentation中的send_and_receive' /usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/solr_instrumentation.rb:16:in 阻止   /usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in   block in instrument' /usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:20:in 仪器”   /usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in   instrument' /usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/solr_instrumentation.rb:15:in send_and_receive_with_as_instrumentation'(eval):2:in post' /usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/search/abstract_search.rb:45:in execute'   /usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/searchable.rb:358:in   `solr_execute_search ''

SOLR开发日志错误

Jul 30, 2013 11:48:46 PM org.apache.solr.servlet.SolrDispatchFilter init
INFO: SolrDispatchFilter.init()
Jul 30, 2013 11:48:46 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
INFO: JNDI not configured for solr (NoInitialContextEx)
Jul 30, 2013 11:48:46 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
INFO: using system property solr.solr.home: /Users/dave/rails_projects/EquiptMe/solr
Jul 30, 2013 11:48:46 PM org.apache.solr.core.CoreContainer$Initializer initialize
INFO: looking for solr.xml: /Users/dave/rails_projects/EquiptMe/solr/solr.xml
Jul 30, 2013 11:48:46 PM org.apache.solr.core.CoreContainer <init>
INFO: New CoreContainer 567038057
Jul 30, 2013 11:48:46 PM org.apache.solr.core.CoreContainer$Initializer initialize
INFO: no solr.xml file found - using default
Jul 30, 2013 11:48:46 PM org.apache.solr.core.CoreContainer load
INFO: Loading CoreContainer using Solr Home: '/Users/dave/rails_projects/EquiptMe/solr/'
Jul 30, 2013 11:48:46 PM org.apache.solr.core.SolrResourceLoader <init>
INFO: new SolrResourceLoader for directory: '/Users/dave/rails_projects/EquiptMe/solr/'
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting socketTimeout to: 0
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting urlScheme to: http://
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting connTimeout to: 0
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting maxConnectionsPerHost to: 20
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting corePoolSize to: 0
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting maximumPoolSize to: 2147483647
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting maxThreadIdleTime to: 5
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting sizeOfQueue to: -1
Jul 30, 2013 11:48:46 PM org.apache.solr.handler.component.HttpShardHandlerFactory getParameter
INFO: Setting fairnessPolicy to: false
Jul 30, 2013 11:48:46 PM org.apache.solr.client.solrj.impl.HttpClientUtil createClient
INFO: Creating new http client, config:maxConnectionsPerHost=20&maxConnections=10000&socketTimeout=0&connTimeout=0&retry=false
Jul 30, 2013 11:48:46 PM org.apache.solr.core.CoreContainer load
INFO: Registering Log Listener
Jul 30, 2013 11:48:46 PM org.apache.solr.core.CoreContainer create
INFO: Creating SolrCore 'collection1' using instanceDir: /Users/dave/rails_projects/EquiptMe/solr/collection1
Jul 30, 2013 11:48:46 PM org.apache.solr.core.SolrResourceLoader <init>
INFO: new SolrResourceLoader for directory: '/Users/dave/rails_projects/EquiptMe/solr/collection1/'
Jul 30, 2013 11:48:47 PM org.apache.solr.core.SolrConfig <init>
INFO: Using Lucene MatchVersion: LUCENE_41
Jul 30, 2013 11:48:47 PM org.apache.solr.core.SolrConfig <init>
INFO: Loaded SolrConfig: solrconfig.xml
Jul 30, 2013 11:48:47 PM org.apache.solr.schema.IndexSchema readSchema
INFO: Reading Solr Schema
Jul 30, 2013 11:48:47 PM org.apache.solr.schema.IndexSchema readSchema
INFO: Schema name=sunspot
Jul 30, 2013 11:48:47 PM org.apache.solr.schema.IndexSchema readSchema
INFO: default search field in schema is text
Jul 30, 2013 11:48:47 PM org.apache.solr.schema.IndexSchema readSchema
INFO: query parser default operator is AND
Jul 30, 2013 11:48:47 PM org.apache.solr.schema.IndexSchema readSchema
INFO: unique key field: id
Jul 30, 2013 11:48:47 PM org.apache.solr.core.SolrCore <init>
INFO: [collection1] Opening new SolrCore at /Users/dave/rails_projects/EquiptMe/solr/collection1/, dataDir=/Users/dave/rails_projects/EquiptMe/solr/data/development/
Jul 30, 2013 11:48:47 PM org.apache.solr.core.SolrCore <init>
INFO: JMX monitoring not detected for core: collection1
Jul 30, 2013 11:48:47 PM org.apache.solr.core.SolrCore initDirectoryFactory
INFO: solr.NRTCachingDirectoryFactory
Jul 30, 2013 11:48:47 PM org.apache.solr.core.CachingDirectoryFactory get
INFO: return new directory for /Users/dave/rails_projects/EquiptMe/solr/data/development forceNew: false
Jul 30, 2013 11:48:47 PM org.apache.solr.core.SolrCore getNewIndexDir
INFO: New index directory detected: old=null new=/Users/dave/rails_projects/EquiptMe/solr/data/development/index/
Jul 30, 2013 11:48:47 PM org.apache.solr.core.CachingDirectoryFactory get
INFO: return new directory for /Users/dave/rails_projects/EquiptMe/solr/data/development/index forceNew: false
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /select: solr.SearchHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /query: solr.SearchHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /get: solr.RealTimeGetHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /update: solr.UpdateRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /update/json: solr.JsonUpdateRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /update/csv: solr.CSVRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: adding lazy requestHandler: solr.extraction.ExtractingRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /update/extract: solr.extraction.ExtractingRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: adding lazy requestHandler: solr.FieldAnalysisRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /analysis/field: solr.FieldAnalysisRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: adding lazy requestHandler: solr.DocumentAnalysisRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /analysis/document: solr.DocumentAnalysisRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /admin/ping: solr.PingRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /debug/dump: solr.DumpRequestHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /replication: solr.ReplicationHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /mlt: solr.MoreLikeThisHandler
Jul 30, 2013 11:48:47 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
INFO: created /admin/: solr.admin.AdminHandlers
Jul 30, 2013 11:48:47 PM org.apache.solr.handler.loader.XMLLoader init
INFO: xsltCacheLifetimeSeconds=60
Jul 30, 2013 11:48:47 PM org.apache.solr.handler.loader.XMLLoader init
INFO: xsltCacheLifetimeSeconds=60
Jul 30, 2013 11:48:47 PM org.apache.solr.handler.loader.XMLLoader init
INFO: xsltCacheLifetimeSeconds=60
Jul 30, 2013 11:48:47 PM org.apache.solr.search.SolrIndexSearcher <init>
INFO: Opening Searcher@1d70ec24 main
Jul 30, 2013 11:48:47 PM org.apache.solr.update.CommitTracker <init>
INFO: Hard AutoCommit: if uncommited for 15000ms; 
Jul 30, 2013 11:48:47 PM org.apache.solr.update.CommitTracker <init>
INFO: Soft AutoCommit: if uncommited for 5000ms; 
Jul 30, 2013 11:48:47 PM org.apache.solr.handler.component.SpellCheckComponent inform
INFO: Initializing spell checkers
Jul 30, 2013 11:48:47 PM org.apache.solr.spelling.DirectSolrSpellChecker init
INFO: init: {name=default,field=name,classname=solr.DirectSolrSpellChecker,distanceMeasure=internal,accuracy=0.5,maxEdits=2,minPrefix=1,maxInspections=5,minQueryLength=4,maxQueryFrequency=0.01}
Jul 30, 2013 11:48:47 PM org.apache.solr.handler.component.SpellCheckComponent inform
INFO: No queryConverter defined, using default converter
Jul 30, 2013 11:48:47 PM org.apache.solr.handler.ReplicationHandler inform
INFO: Commits will be reserved for  10000
Jul 30, 2013 11:48:47 PM org.apache.solr.core.SolrCore registerSearcher
INFO: [collection1] Registered new searcher Searcher@1d70ec24 main{StandardDirectoryReader(segments_1:1)}
Jul 30, 2013 11:48:47 PM org.apache.solr.core.CoreContainer registerCore
INFO: registering core: collection1
Jul 30, 2013 11:48:47 PM org.apache.solr.servlet.SolrDispatchFilter init
INFO: user.dir=/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_solr/solr
Jul 30, 2013 11:48:47 PM org.apache.solr.servlet.SolrDispatchFilter init
INFO: SolrDispatchFilter.init() done

正在使用GEM

gem 'sunspot_solr', github: 'sunspot/sunspot', branch: 'master'
gem 'sunspot_rails', github: 'sunspot/sunspot', branch: 'master'

运行reindex时的错误日志

RSolr::Error::Http - 404 Not Found
Error:     Not Found

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

Backtrace: /usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:268:in `adapt_response'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:175:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:161:in `send_and_receive'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/solr_instrumentation.rb:16:in `block in send_and_receive_with_as_instrumentation'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `block in instrument'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `instrument'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/solr_instrumentation.rb:15:in `send_and_receive_with_as_instrumentation'
(eval):2:in `post'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:67:in `update'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:131:in `delete_by_query'/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:268:in `adapt_response'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:175:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:161:in `send_and_receive'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/solr_instrumentation.rb:16:in `block in send_and_receive_with_as_instrumentation'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `block in instrument'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/notifications.rb:159:in `instrument'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/solr_instrumentation.rb:15:in `send_and_receive_with_as_instrumentation'
(eval):2:in `post'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:67:in `update'
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rsolr-1.0.9/lib/rsolr/client.rb:131:in `delete_by_query'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/indexer.rb:57:in `remove_all'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/session.rb:181:in `block in remove_all'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/session.rb:181:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/session.rb:181:in `remove_all'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/session_proxy/abstract_session_proxy.rb:11:in `remove_all'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb:17:in `method_missing'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/session_proxy/abstract_session_proxy.rb:11:in `remove_all'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot.rb:464:in `remove_all'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/searchable.rb:183:in `solr_remove_all_from_index'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/searchable.rb:202:in `solr_reindex'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/tasks.rb:68:in `block (3 levels) in <top (required)>'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/class_set.rb:16:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot/lib/sunspot/class_set.rb:16:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p247/bundler/gems/sunspot-5488725cb258/sunspot_rails/lib/sunspot/rails/tasks.rb:67:in `block (2 levels) in <top (required)>'
/usr/local/rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
/usr/local/rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'

2 个答案:

答案 0 :(得分:2)

所以我最终解决了这个问题,方法如下。

  1. 首先我卸载了所有版本的太阳黑子和SOLR。
  2. 接下来我用宝石'sunspot_rails'重新安装了太阳黑子 宝石'sunspot_solr'
  3. 然后我将solr.rake添加到application / lib / tasks
  4. namespace :sunspot do
      namespace :solr do
      desc 'Start the Solr instance'
        task :start => :environment do
          case RUBY_PLATFORM
            when /w(in)?32$/, /java$/
              abort("This command is not supported on #{RUBY_PLATFORM}. " +
              "Use rake sunspot:solr:run to run Solr in the foreground.")
         end
    
      if defined?(Sunspot::Rails::Server)
        Sunspot::Rails::Server.new.start
      else
        Sunspot::Solr::Server.new.start
      end
      puts "Successfully started Solr ..."
    end
    
    desc 'Run the Solr instance in the foreground'
    task :run => :environment do
      if defined?(Sunspot::Rails::Server)
        Sunspot::Rails::Server.new.run
      else
        Sunspot::Solr::Server.new.run
      end
    end
    
    desc 'Stop the Solr instance'
    task :stop => :environment do
      case RUBY_PLATFORM
      when /w(in)?32$/, /java$/
        abort("This command is not supported on #{RUBY_PLATFORM}. " +
              "Use rake sunspot:solr:run to run Solr in the foreground.")
      end
    
      if defined?(Sunspot::Rails::Server)
        Sunspot::Rails::Server.new.stop
      else
        Sunspot::Solr::Server.new.stop
      end
      puts "Successfully stopped Solr ..."
    end
    
    task :reindex => :"sunspot:reindex"
    end
    end
    

    之后有效。希望这有助于某人。

答案 1 :(得分:0)

您启动SunSpot Solr服务器的参数是什么?我猜你正在尝试更新到Solr4(集合1出现在Solr4中)并且目录布局错误。

在Solr 3中,配置文件位于solr home下的 conf 目录中。在Solr4中,您可以再获得一个集合级别,默认名称为 collection1

如果我是对的,您可能需要在家中使用 collection1 创建一个子目录,然后移动 conf 以及其下的其他目录。