aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb14
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