class PhraseParser::Query
Query
object
Attributes
Public Class Methods
Source
# File lib/doing/phrase_parser.rb, line 79 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
Source
# File lib/doing/phrase_parser.rb, line 93 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
Source
# File lib/doing/phrase_parser.rb, line 108 def match_phrase(phrase) phrase end
Source
# File lib/doing/phrase_parser.rb, line 86 def to_elasticsearch QueryParser::CLAUSE_TYPES.each_with_object({}) do |type, query| clauses = instance_variable_get("@#{type}_clauses") query[type] = clauses.map { |clause| clause_to_query(clause) } if clauses&.any? end end