Class: FlyingSphinx::FlagAsDeletedJob

Inherits:
Object
  • Object
show all
Defined in:
lib/flying_sphinx/flag_as_deleted_job.rb

Overview

A simple job for flagging a specified Sphinx document in a given index as ‘deleted’.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(indices, document_id) ⇒ FlagAsDeletedJob

Initialises the object with an index name and document id. Please note that the document id is Sphinx’s unique identifier, and will almost certainly not be the model instance’s primary key value.

Parameters:

  • index (String)

    The index name

  • document_id (Integer)

    The document id



14
15
16
# File 'lib/flying_sphinx/flag_as_deleted_job.rb', line 14

def initialize(indices, document_id)
  @indices, @document_id = indices, document_id
end

Instance Attribute Details

#document_idObject

Returns the value of attribute document_id.



5
6
7
# File 'lib/flying_sphinx/flag_as_deleted_job.rb', line 5

def document_id
  @document_id
end

#indicesObject

Returns the value of attribute indices.



5
6
7
# File 'lib/flying_sphinx/flag_as_deleted_job.rb', line 5

def indices
  @indices
end

Instance Method Details

#performBoolean

Updates the sphinx_deleted attribute for the given document, setting the value to 1 (true). This is not a special attribute in Sphinx, but is used by Thinking Sphinx to ignore deleted values between full re-indexing. It’s particularly useful in this situation to avoid old values in the core index and just use the new values in the delta index as a reference point.

Returns:

  • (Boolean)

    true



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/flying_sphinx/flag_as_deleted_job.rb', line 26

def perform
  indices.each do |index|
    client.update(
      index,
      ['sphinx_deleted'],
      {@document_id => [1]}
    ) if ThinkingSphinx.search_for_id(@document_id, index)
  end
rescue Riddle::ConnectionError
  # If it fails here, so be it.
ensure
  true
end