I'll preface this entirely by saying I'm a thinking sphinx newb.

I successfully got a basic index and search up and running in my app. The 
next step was to get the index updated as changes were made. For my app the 
indexed values don't change much as they are song, album, and artist 
records that go largely unchanged once created. However they will change 
form time to time as well as be added to a collection model via a 
polymophic relationship of CollectionItem. 

My issue though is that despite my attempts I cannot get deltas or realtime 
indexing up and running. I don't really care which I use, I just want the 
option I go with to be stable. 

*Delta Attempt*
I setup a song index as follows: 

*ThinkingSphinx::Index.define :song, with: :active_record do*
*  indexes :name*

*  has collectionitems(:collection_id), type: :integer, as: :collection_id*

*  has '4', as: :model_order, type: :integer*

*  has album_id, type: :integer*
*  has artist_id, type: :integer*
*  has created_at, type: :timestamp*
*  has updated_at, type: :timestamp*

*  set_property delta: true*
*end*

The I added the delta column to songs with default true ran rake ts:rebuild 
and was ready to go. After the intial index search results are being 
returned as expected. However when I changed a songs name via the update 
method the index wasn't updated. Its worth noting I don't know how to 
inspect the index I simple performed a search for the new name and got no 
results. If I searched for the old song name it was found. Then I tried a 
new song record folled by a search for it and got no results. 

As soon as I rake ts:rebuild everything is fine (as the index is rebuilt) 
So I'm unsure why it didn't work on update or new record?





*Realtime indices Attempt*
This was my preferred option as I'm always down with cutting edge but I ran 
into basically the same issue as with deltas and then some. 

*Song Index*
*ThinkingSphinx::Index.define :song, with: :real_time do*
*  indexes :name*

*  has collectionitems(:collection_id), type: :integer, as: :collection_id*

*  has '4', as: :model_order, type: :integer*

*  has album_id, type: :integer*
*  has artist_id, type: :integer*
*  has created_at, type: :timestamp*
*  has updated_at, type: :timestamp*
*end*


*Song model*
class Song < ActiveRecord::Base
  belongs_to :album, counter_cache: true
  belongs_to :artist, counter_cache: true

  has_many :collections, through: :collectionitems
  has_many :collectionitems, as: :collectable

  has_many :services, through: :servicesongs
  has_many :servicesongs

  has_many :tracks
  has_many :charts

  after_save ThinkingSphinx::RealTime.callback_for(:song)
end

CollectionItem Model
class Collectionitem < ActiveRecord::Base
  belongs_to :collection
  belongs_to :collectable, polymorphic: true

  validates_uniqueness_of :collectable_id, scope: [:collection_id, 
:collectable_type]

  #after_save ThinkingSphinx::RealTime.callback_for(:collectable 
[:collectable])
end

There are two parts to this: I want to reindex on a new or updated 
Collectionitem so I can perfrom searches for song based on its Collections. 
However In this scenario I get a Rails error on the after_save callback in 
the CollectionItem of 'no implicit conversion of Symbol into Integer' I 
have no clue what this means. It however prevented pages from loading and 
any ts task form being called so I commented it out and decided to just 
test realtime updates on the song first. 

Putting aside the Collectionitem callback I was able to run 'rake 
ts:regenerate' and get the index created and search with results but once 
again as with delta scenario above, changes and new records were not being 
indexed. Yet when I ran 'rake ts:generate' the index updates and all 
results expected are found. 


I feel like an idiot and I'm sorry for such a long post. I just don't see 
what I'm doing wrong here? Neither option for update the index has worked 
at all. Any help at all is appreciated, I can provide whatever code 
necessary to work this out. 

Its worth noting I'm using rails 4.0 with thinking_sphinx 3.0.6 (I assume 
4.0 is supported)


-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/thinking-sphinx.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to