Datetime Deltas for Thinking Sphinx
You’ll need Thinking Sphinx 1.3.0 or later.
gem install ts-datetime-delta
In your Gemfile, you can use it like so:
gem 'ts-datetime-delta', '~> 1.0.2', :require => 'thinking_sphinx/deltas/datetime_delta'
Or if you’re still on Rails 2, then put this in your
environment.rb file with the rest of your gem dependencies:
config.gem 'ts-datetime-delta', :lib => 'thinking_sphinx/deltas/datetime_delta' :version => '>= 1.0.0'
No matter which version of Rails, you’ll need to add the following line to the bottom of your
For the indexes you want to use this delta approach, make sure you set that up in their
define_index do # ... set_property :delta => :datetime end
If you want to use a column other than
updated_at, you can specify it using the
:delta_column option. The same goes for the threshold, which defaults to one day.
set_property :delta => :datetime, :threshold => 1.hour, :delta_column => :changed_at
Then, while your Rails application is running, you’ll need to run the delta indexing rake task regularly – as often as your threshold, allowing for some time for the indexing to actually happen.
For example, if you’re going to run the delta indexing task every hour, I would recommend setting your threshold to 70 minutes.
To ensure this rake task is called regularly, it’s best to set it up as a recurring task via cron or similar tools.
The shorthand version is:
- W. Andrew Loe III – Environment variable for disabling merging.
- Kirill Maximov – Handling nil timestamp column values for toggled checks.
Copyright © 2009-2012 Pat Allan, and released under an MIT Licence.