Module: Sunspot::Rails::Searchable::InstanceMethods

Defined in:
lib/sunspot/rails/searchable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

:nodoc:



333
334
335
336
337
338
339
340
341
342
# File 'lib/sunspot/rails/searchable.rb', line 333

def self.included(base) #:nodoc:
  base.module_eval do
    alias_method :index, :solr_index unless method_defined? :index
    alias_method :index!, :solr_index! unless method_defined? :index!
    alias_method :remove_from_index, :solr_remove_from_index unless method_defined? :remove_from_index
    alias_method :remove_from_index!, :solr_remove_from_index! unless method_defined? :remove_from_index!
    alias_method :more_like_this, :solr_more_like_this unless method_defined? :more_like_this
    alias_method :more_like_this_ids, :solr_more_like_this_ids unless method_defined? :more_like_this_ids
  end
end

Instance Method Details

#indexable?Boolean

Returns:

  • (Boolean)


394
395
396
397
# File 'lib/sunspot/rails/searchable.rb', line 394

def indexable?
  return true unless sunspot_options.has_key?(:if)
  send(sunspot_options[:if])
end

#solr_indexObject

Index the model in Solr. If the model is already indexed, it will be updated. Using the defaults, you will usually not need to call this method, as models are indexed automatically when they are created or updated. If you have disabled automatic indexing (see ClassMethods#searchable), this method allows you to manage indexing manually.



351
352
353
# File 'lib/sunspot/rails/searchable.rb', line 351

def solr_index
  Sunspot.index(self) if indexable?
end

#solr_index!Object

Index the model in Solr and immediately commit. See #index



358
359
360
# File 'lib/sunspot/rails/searchable.rb', line 358

def solr_index!
  Sunspot.index!(self) if indexable?
end

#solr_more_like_this(*args, &block) ⇒ Object



381
382
383
384
385
386
# File 'lib/sunspot/rails/searchable.rb', line 381

def solr_more_like_this(*args, &block)
  options = args.extract_options!
  self.class.solr_execute_search(options) do
    Sunspot.new_more_like_this(self, *args, &block)
  end
end

#solr_more_like_this_ids(&block) ⇒ Object



388
389
390
391
392
# File 'lib/sunspot/rails/searchable.rb', line 388

def solr_more_like_this_ids(&block)
  self.class.solr_execute_search_ids do
    solr_more_like_this(&block)
  end
end

#solr_remove_from_indexObject

Remove the model from the Solr index. Using the defaults, this should not be necessary, as models will automatically be removed from the index when they are destroyed. If you disable automatic removal (which is not recommended!), you can use this method to manage removal manually.



369
370
371
# File 'lib/sunspot/rails/searchable.rb', line 369

def solr_remove_from_index
  Sunspot.remove(self) if indexable?
end

#solr_remove_from_index!Object

Remove the model from the Solr index and commit immediately. See #remove_from_index



377
378
379
# File 'lib/sunspot/rails/searchable.rb', line 377

def solr_remove_from_index!
  Sunspot.remove!(self) if indexable?
end