Module ThinkingSphinx::ActiveRecord::ClassMethods
In: lib/thinking_sphinx/active_record.rb

Methods

Included Modules

ThinkingSphinx::ActiveRecord::Scopes ThinkingSphinx::SearchMethods ThinkingSphinx::ActiveRecord::AttributeUpdates ThinkingSphinx::ActiveRecord::Delta

Public Instance methods

Allows creation of indexes for Sphinx. If you don‘t do this, there isn‘t much point trying to search (or using this plugin at all, really).

An example or two:

  define_index
    indexes :id, :as => :model_id
    indexes name
  end

You can also grab fields from associations - multiple levels deep if necessary.

  define_index do
    indexes tags.name, :as => :tag
    indexes articles.content
    indexes orders.line_items.product.name, :as => :product
  end

And it will automatically concatenate multiple fields:

  define_index do
    indexes [author.first_name, author.last_name], :as => :author
  end

The indexes method is for fields - if you want attributes, use has instead. All the same rules apply - but keep in mind that attributes are for sorting, grouping and filtering, not searching.

  define_index do
    # fields ...

    has created_at, updated_at
  end

One last feature is the delta index. This requires the model to have a boolean field named ‘delta’, and is enabled as follows:

  define_index do
    # fields ...
    # attributes ...

    set_property :delta => true
  end

Check out the more detailed documentation for each of these methods at ThinkingSphinx::Index::Builder.

Temporarily disable delta indexing inside a block, then perform a single rebuild of index at the end.

Useful when performing updates to batches of models to prevent the delta index being rebuilt after each individual update.

In the following example, the delta index will only be rebuilt once, not 10 times.

  SomeModel.suspended_delta do
    10.times do
      SomeModel.create( ... )
    end
  end

[Validate]