module ElasticsearchQueryParser

Mail ElasticsearchQueryParser interface

Public Class Methods

configuration() click to toggle source

Gem configuration object For now only contain 1 attribute: `elastic_field_name` option (by default :text) Responds with OpenStruct entity which responds_to `elastic_field_name` Example:

>> ElasticsearchQueryParser.configuration
=> #<OpenStruct elastic_field_name=:text>
# File lib/elasticsearch_query_parser.rb, line 15
def self.configuration
  @configuration ||= OpenStruct.new(
    elastic_field_name: :text
  )
end
configure() { |configuration| ... } click to toggle source

For gem configuration For now only `elastic_field_name` can be modified. See README.md for details

# File lib/elasticsearch_query_parser.rb, line 23
def self.configure
  yield(configuration)
end
parse_query(user_query) click to toggle source

Parse given string into Elastic query object (see README.md for more examples) Example:

>> ElasticsearchQueryParser.parse_query("London")
=> { query: { bool: { should: [{ match: { text: { query: "London", operator: "and" } } }] } } }
# File lib/elasticsearch_query_parser.rb, line 31
def self.parse_query(user_query)
  query = Sentence.new(user_query).to_s

  return {} if query.to_s.empty?

  parse_tree = Grammar::Parser.new.parse(query)
  transformed_query = Grammar::Transformer.new.apply(parse_tree)
  { query: transformed_query.to_elasticsearch }
rescue Parslet::ParseFailed => e
  raise ParseFailedException, e.parse_failure_cause
end