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.



132
133
134
135
136
# File 'lib/tire/search/query.rb', line 132

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



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

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

#must_not(&block) ⇒ Object



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

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

#should(&block) ⇒ Object



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

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

#to_hashObject



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

def to_hash
  @value.update(@options)
end