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.

master
multiple creatures 2019-11-18 01:43:18 -06:00
parent 4d6e1aa81d
commit 54afd828c2
1 changed files with 33 additions and 17 deletions

View File

@ -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