class PhraseParser::Query
Query
object
Attributes
must_clauses[RW]
must_not_clauses[RW]
should_clauses[RW]
Public Class Methods
new(clauses)
click to toggle source
# File lib/doing/phrase_parser.rb, line 74 def initialize(clauses) grouped = clauses.chunk(&:operator).to_h self.should_clauses = grouped.fetch(:should, []) self.must_not_clauses = grouped.fetch(:must_not, []) self.must_clauses = grouped.fetch(:must, []) end
Public Instance Methods
clause_to_query(clause)
click to toggle source
# File lib/doing/phrase_parser.rb, line 105 def clause_to_query(clause) case clause when TermClause match(clause.term) when PhraseClause match_phrase(clause.phrase) else raise "Unknown clause type: #{clause}" end end
match(term)
click to toggle source
# File lib/doing/phrase_parser.rb, line 116 def match(term) term end
match_phrase(phrase)
click to toggle source
# File lib/doing/phrase_parser.rb, line 120 def match_phrase(phrase) phrase end
to_elasticsearch()
click to toggle source
# File lib/doing/phrase_parser.rb, line 81 def to_elasticsearch query = {} if should_clauses.any? query[:should] = should_clauses.map do |clause| clause_to_query(clause) end end if must_clauses.any? query[:must] = must_clauses.map do |clause| clause_to_query(clause) end end if must_not_clauses.any? query[:must_not] = must_not_clauses.map do |clause| clause_to_query(clause) end end query end