Class: PhraseParser::Query
Overview
Query object
Instance Attribute Summary collapse
-
#must_clauses ⇒ Object
Returns the value of attribute must_clauses.
-
#must_not_clauses ⇒ Object
Returns the value of attribute must_not_clauses.
-
#should_clauses ⇒ Object
Returns the value of attribute should_clauses.
Instance Method Summary collapse
- #clause_to_query(clause) ⇒ Object
-
#initialize(clauses) ⇒ Query
constructor
A new instance of Query.
- #match(term) ⇒ Object
- #match_phrase(phrase) ⇒ Object
- #to_elasticsearch ⇒ Object
Constructor Details
#initialize(clauses) ⇒ Query
Returns a new instance of Query.
79 80 81 82 83 84 |
# 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 |
Instance Attribute Details
#must_clauses ⇒ Object
Returns the value of attribute must_clauses.
77 78 79 |
# File 'lib/doing/phrase_parser.rb', line 77 def must_clauses @must_clauses end |
#must_not_clauses ⇒ Object
Returns the value of attribute must_not_clauses.
77 78 79 |
# File 'lib/doing/phrase_parser.rb', line 77 def must_not_clauses @must_not_clauses end |
#should_clauses ⇒ Object
Returns the value of attribute should_clauses.
77 78 79 |
# File 'lib/doing/phrase_parser.rb', line 77 def should_clauses @should_clauses end |
Instance Method Details
#clause_to_query(clause) ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# 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 |
#match(term) ⇒ Object
104 105 106 |
# File 'lib/doing/phrase_parser.rb', line 104 def match(term) term end |
#match_phrase(phrase) ⇒ Object
108 109 110 |
# File 'lib/doing/phrase_parser.rb', line 108 def match_phrase(phrase) phrase end |
#to_elasticsearch ⇒ Object
86 87 88 89 90 91 |
# 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 |