Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Manage delta indexes via datetime columns for Thinking Sphinx
Ruby Cucumber
branch: master

2.0.2

latest commit 778b2715ad
@pat authored
Failed to load latest commit information.
features
lib/thinking_sphinx/deltas Don't delete records from core index when toggling.
spec Specs now run, at least against ThinkingSphinx v3
tasks
.gitignore
LICENSE Version 1.0, working, spec'd, features and docs.
README.textile 2.0.1
Rakefile
VERSION 2.0.2
ts-datetime-delta.gemspec

README.textile

Datetime Deltas for Thinking Sphinx

Installation

You’ll need Thinking Sphinx 1.3.0 or later (v3 is now supported since the 2.0.0 release of this gem).

gem install ts-datetime-delta

In your Gemfile, you can use it like so:

gem 'ts-datetime-delta', '~> 2.0.1',
  :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 => '>= 2.0.1'

No matter which version of Rails, you’ll need to add the following line to the bottom of your Rakefile:

require 'thinking_sphinx/deltas/datetime_delta/tasks'

Usage

For the indexes you want to use this delta approach, make sure you set that up in your index definition. For Thinking Sphinx v3, that’ll look like this:

ThinkingSphinx::Index.define(:book,
  :with  => :active_record,
  :delta => ThinkingSphinx::Deltas::DatetimeDelta
) do
  # ...
end

But for Thinking Sphinx v1/v2, it belongs within your define_index blocks:

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 :column option. The same goes for the threshold, which defaults to one day.

Again, Thinking Sphinx v3 expects these options outside the block:

ThinkingSphinx::Index.define(:book,
  :with          => :active_record,
  :delta         => ThinkingSphinx::Deltas::DatetimeDelta,
  :delta_options => {:threshold => 1.hour, :column => :changed_at}
) do
  # ...
end

But Thinking Sphinx v1/v2 it goes within the define_index block:

set_property :delta => :datetime,
  :threshold    => 1.hour,
  :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.

rake thinking_sphinx:index:delta

The shorthand version is:

rake ts:in:delta

Contributors

Copyright

Copyright © 2009-2014 Pat Allan, and released under an MIT Licence.

Something went wrong with that request. Please try again.