class ChefZero::Solr::Query::BinaryOperator
Attributes
left[R]
operator[R]
right[R]
Public Class Methods
new(left, operator, right)
click to toggle source
# File lib/chef_zero/solr/query/binary_operator.rb, line 5 def initialize(left, operator, right) @left = left @operator = operator @right = right end
Public Instance Methods
matches_doc?(doc)
click to toggle source
# File lib/chef_zero/solr/query/binary_operator.rb, line 19 def matches_doc?(doc) case @operator when 'AND' left.matches_doc?(doc) && right.matches_doc?(doc) when 'OR' left.matches_doc?(doc) || right.matches_doc?(doc) when '^' left.matches_doc?(doc) when ':' if left.respond_to?(:literal_string) && left.literal_string values = doc[left.literal_string] else values = doc.matching_values { |key| left.matches_values?([key]) } end right.matches_values?(values) end end
matches_values?(values)
click to toggle source
# File lib/chef_zero/solr/query/binary_operator.rb, line 37 def matches_values?(values) case @operator when 'AND' left.matches_values?(values) && right.matches_values?(values) when 'OR' left.matches_values?(values) || right.matches_values?(values) when '^' left.matches_values?(values) when ':' raise ": does not work inside a : or term" end end
to_s()
click to toggle source
# File lib/chef_zero/solr/query/binary_operator.rb, line 11 def to_s "(#{left} #{operator} #{right})" end