Adds support for indexing objects asynchronously using Sunspot and Delayed Job.
Installation
Add this line to your application's Gemfile:
gem 'delayed_sunspot'
And then execute:
$ bundle
Or install it yourself as:
$ gem install delayed_sunspot
Usage
You will need to configure Sunspot to use delayed_sunspot's session proxy in order to push Sunspot commands through Delayed Job.
Sunspot.session = Sunspot::SessionProxy::DelayedJobSessionProxy.new(Sunspot.session)
If you're using Rails put the above line of code in an initializer.
ZOMG! WHY AREN'T MY OBJECTS BEING INDEXED?!
If you're using the sunspot_rails gem you might have noticed that the objects you've been indexing aren't coming back in your search results. This is due to the sunspot_rails gem being configured to autocommit indexes through a controller hook. This functionality doesn't exist when indexing outside of a controller.
You can enable autocommit by putting the following code in your solrconfig.xml under the updateHandler section:
<autoCommit>
<maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered -->
<maxTime>15000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered -->
</autoCommit>
To find out more about autocommits read the Solr documentation
If you've already configured Solr for autocommits you're good to go.
Asynchronous Commands
batch
commit
commit_if_delete_dirty
commit_if_dirty
index
index!
remove
remove!
remove_all
remove_all!
remove_by_id
remove_by_id!
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request