lib/activesearch/algolia.rb in activesearch-0.3.1 vs lib/activesearch/algolia.rb in activesearch-0.3.2
- old
+ new
@@ -1,34 +1,33 @@
-require "activesearch/algolia/client"
-require "activesearch/algolia/worker"
-require "activesearch/base"
-require "activesearch/proxy"
+require 'activesearch/base'
+require 'activesearch/results_set'
+require 'activesearch/proxy'
+require 'activesearch/algolia/client'
+require 'activesearch/algolia/results_set'
+require 'activesearch/algolia/worker'
+
module ActiveSearch
def self.search(text, conditions = {}, options = {})
- locale = options[:locale] || I18n.locale
- conditions[:locale] ||= locale
+ conditions.symbolize_keys!
+ options.symbolize_keys!
- Proxy.new(text, conditions, options) do |text, conditions|
- Algolia::Client.new.query(text, { tags: conditions_to_tags(conditions) }, options)["hits"].map! do |hit|
- if hit["_tags"]
- hit["_tags"].each do |tag|
- # preserve other ":" characters
- _segments = tag.split(':')
+ clean_locale(conditions, options)
- unless _segments.empty? || _segments[1..-1].empty?
- hit[_segments.first] = _segments[1..-1].join(':')
- end
- end
- hit.delete("_tags")
- end
- hit
- end
- end
+ results_set = Algolia::Client.new.query_text(text, { tags: conditions_to_tags(conditions) }, options)
+
+ Proxy.new(results_set, text, options)
end
protected
+
+ def self.clean_locale(conditions, options)
+ locale = options[:locale] || I18n.locale
+ conditions[:locale] ||= locale
+
+ conditions.delete(:locale) if options[:locale] == false
+ end
def self.conditions_to_tags(conditions)
conditions.map { |c| c.join(':') }.join(',')
end
\ No newline at end of file