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