lib/activesearch/mongoid.rb in activesearch-0.2.0 vs lib/activesearch/mongoid.rb in activesearch-0.3.0

- old
+ new

@@ -1,32 +1,49 @@ require 'activesearch/base' require 'activesearch/proxy' -require 'activesearch/mongoid/model' +require 'activesearch/mongoid/index' module ActiveSearch def self.search(text, conditions = {}, options = {}) + locale = options[:locale] || I18n.locale + conditions[:locale] ||= locale + Proxy.new(text, conditions, options) do |text, conditions| - text = text.downcase.split(/\s+/) - conditions.keys.each { |k| conditions["_stored.#{k}"] = conditions.delete(k) } - conditions.merge!(:_keywords.in => text + text.map { |word| "#{I18n.locale}:#{word}"}) - Mongoid::Model.where(conditions) + ActiveSearch::Mongoid::Index.search(text, conditions) end end module Mongoid def self.included(base) base.class_eval do include Base end end + def to_indexable + {}.tap do |doc| + _locale = search_locale + + search_fields.each do |field| + if content = send(field) + doc[field.to_s] = if content.is_a?(Hash) && content.has_key?(_locale) + ActiveSearch.strip_tags(content[_locale]) + else + ActiveSearch.strip_tags(content) + end + end + end + end + end + protected + def reindex - ActiveSearch::Mongoid::Model.reindex(self, self.search_fields, self.search_options) + ActiveSearch::Mongoid::Index.reindex(self, self.search_fields, self.search_options) end def deindex - ActiveSearch::Mongoid::Model.deindex(self) + ActiveSearch::Mongoid::Index.deindex(self) end end end \ No newline at end of file