This code is HEAVILY borrowed from ts-delayed-delta.
This gem depends on the following gems: thinking-sphinx, resque, and resque-lock-timeout.
gem install ts-resque-delta
Add ts-resque-delta to your Gemfile file, with the rest of your gem dependencies:
gem 'ts-resque-delta', '~> 2.1'
If you're using Rails 3, the rake tasks will automatically be loaded by Rails. If you're using Rails 2, add the following line to your Rakefile:
require 'thinking_sphinx/deltas/resque_delta/tasks'
Add the delta property to each define_index
block:
define_index do
# ...
set_property :delta => ThinkingSphinx::Deltas::ResqueDelta
end
If you've never used delta indexes before, you'll want to add the boolean
column named :delta
to each model's table (note, you must set the :default
value to true
):
def self.up
add_column :foos, :delta, :boolean, :default => true, :null => false
end
Also, I highly recommend adding a MySQL index to the table of any model using
delta indexes. The Sphinx indexer uses WHERE table.delta = 1
whenever the
delta indexer runs and ... = 0
whenever the normal indexer runs. Having the
MySQL index on the delta column will generally be a win:
def self.up
# ...
add_index :foos, :delta
end
Once you've got it all set up, all you need to do is make sure that the Resque
worker is running. You can do this by specifying the :ts_delta
queue when
running Resque:
QUEUE=ts_delta,other_queues rake resque:work
- Aaron Gibralter
- Ryan Schlesinger (Locking/
smart_index
) - Pat Allan (FlyingSphinx support)
- James Richard
- Pat Allan
- Ryan Schlesinger (Allowing installs as a plugin)
- Maximilian Schulz (Ensuring compatibility with Bundler)
- Edgars Beigarts (Adding intelligent description for tasks)
- Alexander Simonov (Explicit table definition)
Copyright (c) 2011 Aaron Gibralter, and released under an MIT Licence.