Module: DynamicSunspotSearch::Translator::Fulltext

Defined in:
lib/dynamic_sunspot_search/translator/fulltext.rb

Class Method Summary collapse

Class Method Details

.apply(query_object, fulltext) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 6

def self.apply(query_object, fulltext)
  return unless fulltext.present?
  query_object.tap do |search|
    case fulltext
    when String, Symbol
      search.fulltext fulltext.to_s
    when Array
      fulltext.each do |ft|
        apply(search, ft)
      end
    when Hash
      query = fulltext.delete(:query)
      search.fulltext(query) do
        fulltext.each do |method, args|
          method_mapper(self, method, args)
        end
      end
    else
      raise NotImplementedError
    end
  end
end

.apply_boost(query_object, options) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 48

def self.apply_boost(query_object, options)
  query_object.tap do |search|
    if options[:scope]
      search.boost(2.0) do
        Scope.apply(self, options[:scope])
      end
    else
      search.boost(2.0)
    end
  end
end

.apply_boost_fields(query_object, options) ⇒ Object



60
61
62
63
64
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 60

def self.apply_boost_fields(query_object, options)
  query_object.tap do |search|
    search.boost_fields options
  end
end

.apply_fields(query_object, options) ⇒ Object



66
67
68
69
70
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 66

def self.apply_fields(query_object, options)
  query_object.tap do |search|
    search.fields *Array.wrap(options)
  end
end

.apply_phrase_fields(query_object, options) ⇒ Object



72
73
74
75
76
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 72

def self.apply_phrase_fields(query_object, options)
  query_object.tap do |search|
    search.phrase_fields options
  end
end

.apply_phrase_slop(query_object, options) ⇒ Object



78
79
80
81
82
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 78

def self.apply_phrase_slop(query_object, options)
  query_object.tap do |search|
    search.phrase_slop options
  end
end

.apply_query_phrase_slop(query_object, options) ⇒ Object



84
85
86
87
88
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 84

def self.apply_query_phrase_slop(query_object, options)
  query_object.tap do |search|
    search.query_phrase_slop options
  end
end

.method_mapper(query_object, method, options) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/dynamic_sunspot_search/translator/fulltext.rb', line 29

def self.method_mapper(query_object, method, options)
  case method
  when :boost
    apply_boost(query_object, options)
  when :boost_fields
    apply_boost_fields(query_object, options)
  when :fields
    apply_fields(query_object, options)
  when :phrase_fields
    apply_phrase_fields(query_object, options)
  when :phrase_slop
    apply_phrase_slop(query_object, options)
  when :query_phrase_slop
    apply_query_phrase_slop(query_object, options)
  else
    raise NotImplementedError
  end
end