diff --git a/app/jobs/scheduled/reindex_search.rb b/app/jobs/scheduled/reindex_search.rb index 28f95c4ad2b..51577f6f320 100644 --- a/app/jobs/scheduled/reindex_search.rb +++ b/app/jobs/scheduled/reindex_search.rb @@ -10,41 +10,46 @@ module Jobs rebuild_problem_users end - def rebuild_problem_categories(limit = 10000) - categories = load_problem_categories(limit) + def rebuild_problem_categories(limit = 500) + category_ids = load_problem_category_ids(limit) - categories.each do |category| - SearchIndexer.index(category, force: true) + category_ids.each do |id| + category = Category.find_by(id: id) + SearchIndexer.index(category, force: true) if category end end def rebuild_problem_users(limit = 10000) - users = load_problem_users(limit) + user_ids = load_problem_user_ids(limit) - users.each do |user| - SearchIndexer.index(user, force: true) + user_ids.each do |id| + user = User.find_by(id: id) + SearchIndexer.index(user, force: true) if user end end def rebuild_problem_topics(limit = 10000) - topics = load_problem_topics(limit) + topic_ids = load_problem_topic_ids(limit) - topics.each do |topic| - SearchIndexer.index(topic, force: true) + topic_ids.each do |id| + topic = Topic.find_by(id: id) + SearchIndexer.index(topic, force: true) if topic end end def rebuild_problem_posts(limit = 10000) - posts = load_problem_posts(limit) + post_ids = load_problem_post_ids(limit) - posts.each do |post| - SearchIndexer.index(post, force: true) + post_ids.each do |id| + post = Post.find_by(id: id) + # could be deleted while iterating through batch + SearchIndexer.index(post, force: true) if post end end private - def load_problem_posts(limit) + def load_problem_post_ids(limit) Post.joins(:topic) .where('posts.id IN ( SELECT p2.id FROM posts p2 @@ -52,27 +57,31 @@ module Jobs WHERE pd.post_id IS NULL )', SiteSetting.default_locale, Search::INDEX_VERSION) .limit(limit) + .pluck(:id) end - def load_problem_categories(limit) + def load_problem_category_ids(limit) Category.joins(:category_search_data) .where('category_search_data.locale != ? OR category_search_data.version != ?', SiteSetting.default_locale, Search::INDEX_VERSION) .limit(limit) + .pluck(:id) end - def load_problem_topics(limit) + def load_problem_topic_ids(limit) Topic.joins(:topic_search_data) .where('topic_search_data.locale != ? OR topic_search_data.version != ?', SiteSetting.default_locale, Search::INDEX_VERSION) .limit(limit) + .pluck(:id) end - def load_problem_users(limit) + def load_problem_user_ids(limit) User.joins(:user_search_data) .where('user_search_data.locale != ? OR user_search_data.version != ?', SiteSetting.default_locale, Search::INDEX_VERSION) .limit(limit) + .pluck(:id) end end end