class Client::Filter
Attributes
attribute[RW]
exclude[RW]
values[RW]
Public Class Methods
new(attribute, values, exclude=false)
click to toggle source
Attribute name, values (which can be an array or a range), and whether the filter should be exclusive.
# File lib/riddle/client/filter.rb, line 10 def initialize(attribute, values, exclude=false) @attribute, @values, @exclude = attribute, values, exclude end
Public Instance Methods
exclude?()
click to toggle source
# File lib/riddle/client/filter.rb, line 14 def exclude? self.exclude end
query_message()
click to toggle source
Returns the message for this filter to send to the Sphinx service
# File lib/riddle/client/filter.rb, line 19 def query_message message = Message.new message.append_string self.attribute.to_s case self.values when Range if self.values.first.is_a?(Float) && self.values.last.is_a?(Float) message.append_int FilterTypes[:float_range] message.append_floats self.values.first, self.values.last else message.append_int FilterTypes[:range] append_integer_range message, self.values end when Array if self.values.first.is_a?(Float) && self.values.length == 1 message.append_int FilterTypes[:float_range] message.append_floats self.values.first, self.values.first else message.append_int FilterTypes[:values] message.append_int self.values.length append_array message, self.values end end message.append_int self.exclude? ? 1 : 0 message.to_s end
Private Instance Methods
append_array(message, array)
click to toggle source
# File lib/riddle/0.9.9/client/filter.rb, line 12 def append_array(message, array) message.append_64bit_ints *array.collect { |val| case val when TrueClass 1 when FalseClass 0 else val end } end
append_integer_range(message, range)
click to toggle source
# File lib/riddle/0.9.9/client/filter.rb, line 8 def append_integer_range(message, range) message.append_64bit_ints self.values.first, self.values.last end