Class: Workarea::BulkIndexSearches

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker
Defined in:
app/workers/workarea/bulk_index_searches.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.perform(ids = popular_searches.pluck(:id)) ⇒ Object



6
7
8
9
10
# File 'app/workers/workarea/bulk_index_searches.rb', line 6

def perform(ids = popular_searches.pluck(:id))
  ids.each_slice(Workarea.config.bulk_index_batch_size) do |group|
    perform_by_models(Metrics::SearchByWeek.in(id: group).to_a)
  end
end

.perform_by_models(searches) ⇒ Object



20
21
22
23
24
25
26
# File 'app/workers/workarea/bulk_index_searches.rb', line 20

def perform_by_models(searches)
  documents = searches.map do |model|
    Search::Storefront::Search.new(model).as_bulk_document
  end

  Search::Storefront.bulk(documents)
end


12
13
14
15
16
17
18
# File 'app/workers/workarea/bulk_index_searches.rb', line 12

def popular_searches
  Metrics::SearchByWeek
    .last_week
    .has_results
    .most_searched
    .limit(Workarea.config.max_searches_to_index)
end

Instance Method Details

#performObject



29
30
31
# File 'app/workers/workarea/bulk_index_searches.rb', line 29

def perform(*)
  self.class.perform
end