diff options
Diffstat (limited to 'lib/chef_zero/solr/query')
-rw-r--r-- | lib/chef_zero/solr/query/binary_operator.rb | 16 | ||||
-rw-r--r-- | lib/chef_zero/solr/query/phrase.rb | 2 | ||||
-rw-r--r-- | lib/chef_zero/solr/query/range_query.rb | 4 | ||||
-rw-r--r-- | lib/chef_zero/solr/query/regexpable_query.rb | 1 | ||||
-rw-r--r-- | lib/chef_zero/solr/query/term.rb | 10 | ||||
-rw-r--r-- | lib/chef_zero/solr/query/unary_operator.rb | 8 |
6 files changed, 21 insertions, 20 deletions
diff --git a/lib/chef_zero/solr/query/binary_operator.rb b/lib/chef_zero/solr/query/binary_operator.rb index 6d9b219..e733102 100644 --- a/lib/chef_zero/solr/query/binary_operator.rb +++ b/lib/chef_zero/solr/query/binary_operator.rb @@ -18,13 +18,13 @@ module ChefZero def matches_doc?(doc) case @operator - when 'AND' + when "AND" left.matches_doc?(doc) && right.matches_doc?(doc) - when 'OR' + when "OR" left.matches_doc?(doc) || right.matches_doc?(doc) - when '^' + when "^" left.matches_doc?(doc) - when ':' + when ":" if left.respond_to?(:literal_string) && left.literal_string values = doc[left.literal_string] else @@ -36,13 +36,13 @@ module ChefZero def matches_values?(values) case @operator - when 'AND' + when "AND" left.matches_values?(values) && right.matches_values?(values) - when 'OR' + when "OR" left.matches_values?(values) || right.matches_values?(values) - when '^' + when "^" left.matches_values?(values) - when ':' + when ":" raise ": does not work inside a : or term" end end diff --git a/lib/chef_zero/solr/query/phrase.rb b/lib/chef_zero/solr/query/phrase.rb index f229da9..d345a8e 100644 --- a/lib/chef_zero/solr/query/phrase.rb +++ b/lib/chef_zero/solr/query/phrase.rb @@ -1,4 +1,4 @@ -require 'chef_zero/solr/query/regexpable_query' +require "chef_zero/solr/query/regexpable_query" module ChefZero module Solr diff --git a/lib/chef_zero/solr/query/range_query.rb b/lib/chef_zero/solr/query/range_query.rb index 625c0bb..76ec828 100644 --- a/lib/chef_zero/solr/query/range_query.rb +++ b/lib/chef_zero/solr/query/range_query.rb @@ -15,7 +15,7 @@ module ChefZero def matches_values?(values) values.any? do |value| - unless @from == '*' + unless @from == "*" case @from <=> value when -1 return false @@ -23,7 +23,7 @@ module ChefZero return false if !@from_inclusive end end - unless @to == '*' + unless @to == "*" case value <=> @to when 1 return false diff --git a/lib/chef_zero/solr/query/regexpable_query.rb b/lib/chef_zero/solr/query/regexpable_query.rb index cebc011..62d7fc7 100644 --- a/lib/chef_zero/solr/query/regexpable_query.rb +++ b/lib/chef_zero/solr/query/regexpable_query.rb @@ -16,6 +16,7 @@ module ChefZero def matches_doc?(doc) matches_values?(doc[DEFAULT_FIELD]) end + def matches_values?(values) values.any? { |value| !@regexp.match(value).nil? } end diff --git a/lib/chef_zero/solr/query/term.rb b/lib/chef_zero/solr/query/term.rb index 23f4a72..e106519 100644 --- a/lib/chef_zero/solr/query/term.rb +++ b/lib/chef_zero/solr/query/term.rb @@ -1,4 +1,4 @@ -require 'chef_zero/solr/query/regexpable_query' +require "chef_zero/solr/query/regexpable_query" module ChefZero module Solr @@ -11,19 +11,19 @@ module ChefZero regexp_string = "" index = 0 while index < term.length - if term[index] == '*' + if term[index] == "*" regexp_string << "#{WORD_CHARACTER}*" literal_string = nil index += 1 - elsif term[index] == '?' + elsif term[index] == "?" regexp_string << WORD_CHARACTER literal_string = nil index += 1 - elsif term[index] == '~' + elsif term[index] == "~" raise "~ unsupported" else if term[index] == '\\' - index = index+1 + index = index + 1 if index >= term.length raise "Backslash at end of string '#{term}'" end diff --git a/lib/chef_zero/solr/query/unary_operator.rb b/lib/chef_zero/solr/query/unary_operator.rb index a873932..e83683c 100644 --- a/lib/chef_zero/solr/query/unary_operator.rb +++ b/lib/chef_zero/solr/query/unary_operator.rb @@ -16,9 +16,9 @@ module ChefZero def matches_doc?(doc) case @operator - when '-', 'NOT' + when "-", "NOT" !operand.matches_doc?(doc) - when '+' + when "+" # TODO This operator uses relevance to eliminate other, unrelated # expressions. +a OR b means "if it has b but not a, don't return it" raise "+ not supported yet, because it is hard." @@ -27,9 +27,9 @@ module ChefZero def matches_values?(values) case @operator - when '-', 'NOT' + when "-", "NOT" !operand.matches_values?(values) - when '+' + when "+" # TODO This operator uses relevance to eliminate other, unrelated # expressions. +a OR b means "if it has b but not a, don't return it" raise "+ not supported yet, because it is hard." |