Thinking Sphinx with Rails - Delta indexing seems to work fine for one model but not for the other
Posted
by hack3r
on Stack Overflow
See other posts from Stack Overflow
or by hack3r
Published on 2010-04-08T22:32:03Z
Indexed on
2010/04/08
22:33 UTC
Read the original article
Hit count: 339
I have 2 models User and Discussion. I have defined the indices for the models as below:
For the User model:
define_index do
indexes email
indexes first_name
indexes last_name, :sortable => true
indexes groups(:name), :as => :group_names
has "IF(email_confirmed = true and status = 'approved', true, false)", :as => :approved_user, :type => :boolean
has "IF(email_confirmed = true and (status = 'approved' or status='blocked'), true, false)", :as => :approved_or_blocked_user, :type => :boolean
has points, :type => :integer
has created_at, :type => :datetime
has user(:id)
set_property :delta => true
end
For the Discussion model:
define_index do
indexes title
indexes description
indexes category(:title), :as => :category_title
indexes tags(:title), :as => :tag_title
has "IF(publish_to_blog = true AND sticky = false, true, false)", :as => :publish_to_main, :type => :boolean
has created_at
has updated_at, :type => :datetime
has recent_activity_at, :type => :datetime
has views_count, :type => :integer
has featured
has publish_to_blog
has sticky
set_property :delta => true
end
I have added a delta column to both tables as per the documentation. My problem is that delta indexing works only for the Discussion model and not for the User model. For ex: When I update the 'title' of a discussion, I can see the thinking sphinx is rotating the indices etc. (as is evident from the logs). But when I update the 'first_name' or the 'last_name' of a user, nothing happens.
The User model also has a has_many :through association through a model called GroupsUser. I have setup a after_save on the GroupsUser as follows:
def set_user_delta_flag
user.delta = true
user.save
end
Even this doesn't seem to trigger delta indexing on the User model. A similar setup for the Discussion model works perfectly! Can anyone tell me why this is happening?
© Stack Overflow or respective owner