问题
In config/sunspot.yml
production:
solr:
hostname: http://index.websolr.com/solr/...
port: 8983
log_level: WARNING
path: /solr/production
...
And my Heroku config variable is
http://index.websolr.com/solr/...
And everything else seems to be configured as per the docs, but I keep getting 404 messages in the log and app crashes. Has anyone come across this before and managed to fix it?
回答1:
To clarify, Sunspot comes bundled with Solr by default, but that is completely separate from your websolr index. Websolr indices are managed through a dashboard that you can see by running heroku addons:open websolr
. All of the configuration settings are applied there; you can't start/stop/restart websolr from the command line.
Per the documentation:
By default, Sunspot 1.3.0 supports the
WEBSOLR_URL
environment variable used by your Heroku application in production. This lets Sunspot perform actions on your index without further configuration, allowing users to get search up and running quickly without necessitating changes to their app’s codebase.If you would like more fine-grained control over which Solr servers you are using in different environments, you may run
script/generate sunspot
from a command line in your application’s root directory to create a Sunspot configuration file atconfig/sunspot.yml
.
So you should be able to simply remove the sunspot.yml file and Sunspot will simply use the value of your WEBSOLR_URL
. Alternatively, you could use something like this:
production:
solr:
hostname: index.websolr.com
port: 80
log_level: WARNING
path: /solr/a1b2c3d4e5 (whatever your key is)
回答2:
Try this:
- Stop Solr
- Remove solr folder from your project folder
- Change 'path: /solr/production' to: 'path: /solr/default'
- Reboot the machine
- Start solr
Its weird, but works for me.
来源:https://stackoverflow.com/questions/26548459/heroku-rsolrerrorhttp-rsolrerrorhttp-404-not-found