Class: Tire::Search::BooleanQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/tire/search/query.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &block) ⇒ BooleanQuery

TODO: Try to get rid of multiple should, must, etc invocations, and wrap queries directly:

  boolean do
    should do
      string 'foo'
      string 'bar'
    end
  end

Inherit from Query, implement encode method there, and overload it here, so it puts queries in an Array instead of hash.



136
137
138
139
140
# File 'lib/tire/search/query.rb', line 136

def initialize(options={}, &block)
  @options = options
  @value   = {}
  block.arity < 1 ? self.instance_eval(&block) : block.call(self) if block_given?
end

Instance Method Details

#must(&block) ⇒ Object



142
143
144
145
# File 'lib/tire/search/query.rb', line 142

def must(&block)
  (@value[:must] ||= []) << Query.new(&block).to_hash
  @value
end

#must_not(&block) ⇒ Object



147
148
149
150
# File 'lib/tire/search/query.rb', line 147

def must_not(&block)
  (@value[:must_not] ||= []) << Query.new(&block).to_hash
  @value
end

#should(&block) ⇒ Object



152
153
154
155
# File 'lib/tire/search/query.rb', line 152

def should(&block)
  (@value[:should] ||= []) << Query.new(&block).to_hash
  @value
end

#to_hashObject



157
158
159
# File 'lib/tire/search/query.rb', line 157

def to_hash
  @value.update(@options)
end