Hi Sundar

Sorry for being so slow on responding to this.

Certainly, the code you’ve got there will not remove documents from the core 
index. What this means is that any queries that match old data in the core 
index will return results that you may not want. What you could do instead is 
the following:

  ids = Article.where(<some_condition>).pluck :id
  
  Article.where(:ids => ids).update_all :delta => true
  ThinkingSphinx::Deltas::IndexJob.new(‘article_delta’).perform
  
  indices = 
ThinkingSphinx::Configuration.instance.indices_for_references(:article)
  indices.reject { |index| index.delta? }.each do |index|
    ids.each do |id|
      ThinkingSphinx::Deltas::DeleteJob.new(
        index.name, index.document_id_for_key(id)
      ).perform
    end
  end

Note that this code should work with TS v3.0.4. A slightly simpler approach 
(which involves far fewer Sphinx queries) is available since v3.1.2:

  ids = Article.where(<some_condition>).pluck :id
  
  Article.where(:ids => ids).update_all :delta => true
  ThinkingSphinx::Deltas::IndexJob.new(‘article_delta’).perform
  
  indices = 
ThinkingSphinx::Configuration.instance.indices_for_references(:article)
  indices.reject { |index| index.delta? }.each do |index|
    ThinkingSphinx::Deletion.perform index, ids
  end

If you wanted to push this behaviour into Delayed Job instead, then I’d 
recommend creating a custom job class to do so (as the internals of 
ts-delayed-delta for deleting from the core index are written with single 
instances in mind).

Hope this helps!

— 
Pat

> On 5 Jul 2016, at 11:16 PM, Sundar Rajamanickam 
> <sundar.rajamanic...@chronus.com> wrote:
> 
> Hi
> 
> If I do the following, how will the documents be removed from core index ( 
> because we do not invoke ThinkingSphinx::Deltas::DeleteJob ) ? Is there an 
> impact with not removing the documents from core index ?
> 
> Article.where(<some_condition>).update_all("delta = 1")
> ThinkingSphinx::Deltas::IndexJob.new("article_delta").perform
> 
> 
> Also, if I only want to en-queue jobs in DJ queue post update_all, what 
> should be done ?
> 
> 
> Gem versions:
> 
> gem 'thinking-sphinx', '3.0.4'
> gem 'ts-delayed-delta', '~> 2.0.2'
> 
> -- 
> 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 thinking-sphinx+unsubscr...@googlegroups.com 
> <mailto:thinking-sphinx+unsubscr...@googlegroups.com>.
> To post to this group, send email to thinking-sphinx@googlegroups.com 
> <mailto:thinking-sphinx@googlegroups.com>.
> Visit this group at https://groups.google.com/group/thinking-sphinx 
> <https://groups.google.com/group/thinking-sphinx>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.


-- 
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 thinking-sphinx+unsubscr...@googlegroups.com.
To post to this group, send email to thinking-sphinx@googlegroups.com.
Visit this group at https://groups.google.com/group/thinking-sphinx.
For more options, visit https://groups.google.com/d/optout.

Reply via email to