diff options
-rw-r--r-- | vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb index eadcd2ab6..e74afdf1e 100644 --- a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb +++ b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb @@ -134,7 +134,7 @@ module ActsAsXapian raise "Z is reserved for stemming terms" if term[1] == "Z" raise "Already have code '" + term[1] + "' in another model but with different prefix '" + @@terms_by_capital[term[1]] + "'" if @@terms_by_capital.include?(term[1]) && @@terms_by_capital[term[1]] != term[2] @@terms_by_capital[term[1]] = term[2] - @@query_parser.add_boolean_prefix(term[2], term[1]) + @@query_parser.add_prefix(term[2], term[1]) end end if options[:values] @@ -482,14 +482,22 @@ module ActsAsXapian # process is aborted and old database carries on being used. Perhaps do in # transaction and commit after rename below? Not sure if thenlocking is then bad # for live website running at same time. + ActsAsXapianJob.destroy_all + batch_size = 1000 for model_class in model_classes - models = model_class.find(:all) - for model in models + model_class.transaction do + 0.step(model_class.count, batch_size) do |i| + STDOUT.puts("ActsAsXapian: New batch. From #{i} to #{i + batch_size}") if verbose + models = model_class.find(:all, :limit => batch_size, :offset => i) + for model in models STDOUT.puts("ActsAsXapian.rebuild_index #{model_class} #{model.id}") if verbose model.xapian_index + end end + end end + ActsAsXapian.writable_db.flush # Rename into place |