Delayed Deltas for Thinking Sphinx (with Resque)
This code is HEAVILY borrowed from ts-delayed-delta.
Installation
This gem depends on the following gems: thinking-sphinx
and resque
.
Currently, you'll need Thinking Sphinx v1.5.0 (for Rails 2), v2.1.0
(for Rails 3), or - ideally - v3.0.3 or newer (for Rails 3.1 onwards). If you're
on a version of Thinking Sphinx that's too old, you better go upgrade - but
otherwise, add ts-resque-delta
to your Gemfile
file with the rest of your
gem dependencies:
gem 'ts-resque-delta', '~> 2.0.0'
Add the delta property to index definition. If you're using Thinking Sphinx v3, then it'll look something like this:
ThinkingSphinx::Index.define(:article,
:with => :active_record,
:delta => ThinkingSphinx::Deltas::ResqueDelta
) do
# fields and attributes and so on...
end
But if you're still using v1.5 or v2.1, you'll want the following:
define_index do
# fields and attributes and so on...
set_property :delta => ThinkingSphinx::Deltas::ResqueDelta
end
If you've never used delta indexes before, you'll need to add the boolean
column named :delta
to each table for indexed models. A database index for
that column is also recommended.
def change
add_column :articles, :delta, :boolean, :default => true, :null => false
add_index :articles, :delta
end
Usage
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
Contributors (for ts-resque-delta)
- Aaron Gibralter
-
Ryan Schlesinger (Locking/
smart_index
) - Pat Allan (FlyingSphinx support)
- James Richard
Original Contributors (for ts-delayed-delta)
- 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
Copyright (c) 2011-2014 Aaron Gibralter and Pat Allan, and released under an MIT Licence.