aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeb Bacon <seb.bacon@gmail.com>2011-03-09 14:05:00 +0000
committerSeb Bacon <seb.bacon@gmail.com>2011-03-10 10:56:15 +0000
commite2b9d18992f5b577b7c613e96dd2e67cb3bf4f4e (patch)
tree8bb9b29bc5c417471494dcab85d96cdb678c0496
parenteda327da357dfa7c5581a124a1ea2417e4983a39 (diff)
support text indexing of multiple languages (across the same index)
-rw-r--r--vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb29
1 files changed, 27 insertions, 2 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 047321562..fa322fe9b 100644
--- a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
+++ b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
@@ -668,9 +668,34 @@ module ActsAsXapian
self.class.to_s + "-" + self.id.to_s
end
- # Extract value of a field from the model
def xapian_value(field, type = nil)
- value = self[field] || self.send(field.to_sym)
+ if self.respond_to?("translations")
+ if type == :date or type == :boolean
+ value = single_xapian_value(field, type = type)
+ else
+ values = []
+ for locale in self.translations.map{|x| x.locale}
+ self.class.with_locale(locale) do
+ values << single_xapian_value(field, type=type)
+ end
+ end
+ if values[0].kind_of?(String)
+ values = values.reject{|x| x.nil?}
+ value = values.join(" ")
+ else
+ values = values.map{|x| x[0]}
+ value = values.reject{|x| x.nil?}
+ end
+ end
+ else
+ value = single_xapian_value(field, type = type)
+ end
+ return value
+ end
+
+ # Extract value of a field from the model
+ def single_xapian_value(field, type = nil)
+ value = self.send(field.to_sym) || self[field]
if type == :date
if value.kind_of?(Time)
value.utc.strftime("%Y%m%d")