Split indexing Rake tasks to: `monsterfork:index_statuses` (reindex statuses that do not normalized text yet), `monsterfork:reindex_statuses` (reindex all statuses), and `monsterfork:reindex_media_desc` (reindex statuses with media descriptions). These tasks are only needed by admins setting up Monsterfork for the first time or if the normalization scheme has changed drastically.
parent
4d6e1aa81d
commit
54afd828c2
|
@ -1,24 +1,40 @@
|
|||
namespace :monsterfork do
|
||||
desc '(Re-)Index statuses for search.'
|
||||
task index_statuses: :environment do
|
||||
include TextHelper
|
||||
# frozen_string_literal: true
|
||||
|
||||
i = 0
|
||||
total = Status.count
|
||||
def index_statuses(statuses_query)
|
||||
include TextHelper
|
||||
|
||||
Status.find_in_batches do |statuses|
|
||||
ActiveRecord::Base.logger.info("Indexing status #{1+i} of #{total}.")
|
||||
ActiveRecord::Base.logger.silence do
|
||||
i += statuses.count
|
||||
statuses.each do |s|
|
||||
begin
|
||||
next if s.destroyed?
|
||||
s.update_column(:normalized_text, normalize_status(s))
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
true
|
||||
end
|
||||
i = 0
|
||||
total = statuses_query.count
|
||||
|
||||
statuses_query.find_in_batches do |statuses|
|
||||
ActiveRecord::Base.logger.info("Indexing status #{1+i} of #{total}.")
|
||||
ActiveRecord::Base.logger.silence do
|
||||
i += statuses.count
|
||||
statuses.each do |s|
|
||||
begin
|
||||
next if s.destroyed?
|
||||
s.update_column(:normalized_text, normalize_status(s))
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
namespace :monsterfork do
|
||||
desc 'Index statuses for search that have not been indexed yet.'
|
||||
task index_statuses: :environment do
|
||||
index_statuses(Status.where(normalized_text: ''))
|
||||
end
|
||||
|
||||
desc 'Reindex all statuses for search.'
|
||||
task reindex_statuses: :environment do
|
||||
index_statuses(Status)
|
||||
end
|
||||
|
||||
desc 'Reindex statuses containing media with descriptions for search.'
|
||||
task reindex_media_descs: :environment do
|
||||
index_statuses(Status.left_outer_joins(:media_attachments).where('media_attachments.description IS NOT NULL'))
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue