task "search:reindex" => :environment do ENV['RAILS_DB'] ? reindex_search : reindex_search_all_sites end def reindex_search(db = RailsMultisite::ConnectionManagement.current_db) puts "Reindexing '#{db}'" puts "" puts "Posts:" Post.exec_sql("select p.id, p.cooked, c.name category, t.title, p.post_number, t.id topic_id from posts p join topics t on t.id = p.topic_id left join categories c on c.id = t.category_id ").each do |p| post_id = p["id"] cooked = p["cooked"] title = p["title"] category = p["cat"] post_number = p["post_number"].to_i topic_id = p["topic_id"].to_i SearchIndexer.update_posts_index(post_id, cooked, title, category) SearchIndexer.update_topics_index(topic_id, title , cooked) if post_number == 1 putc "." end puts puts "Users:" User.exec_sql("select id, name, username from users").each do |u| id = u["id"] name = u["name"] username = u["username"] SearchIndexer.update_users_index(id, username, name) putc "." end puts puts "Categories" Category.exec_sql("select id, name from categories").each do |c| id = c["id"] name = c["name"] SearchIndexer.update_categories_index(id, name) putc '.' end puts '', 'Tags' Tag.exec_sql('select id, name from tags').each do |t| SearchIndexer.update_tags_index(t['id'], t['name']) putc '.' end puts end def reindex_search_all_sites RailsMultisite::ConnectionManagement.each_connection do |db| reindex_search(db) end end