Class: EsQueryBuilder::Tokenizer
- Inherits:
-
Object
- Object
- EsQueryBuilder::Tokenizer
- Defined in:
- lib/es-query-builder/tokenizer.rb
Constant Summary collapse
- QUERY_REGEXP =
/ ( (-)? # Minus (?:(\w+):)? # Field (?: (?:"(.*?)(?<!\\)") # Quoted query | ([^\s]+) # Single query ) ) /x- OR_CONDITION =
/^OR$/i
Instance Method Summary collapse
-
#initialize(query_fields = [], filter_fields = []) ⇒ Tokenizer
constructor
Public: Construct the tokenizer object.
-
#tokenize(query_string) ⇒ Object
Public: Tokenize the given query string for parsing it later.
Constructor Details
#initialize(query_fields = [], filter_fields = []) ⇒ Tokenizer
Public: Construct the tokenizer object.
filter_fields - An Array of Strings for specifing allowed filtering
types (default: []).
all_query_fields - The String or Array of Strings for searching usual
query terms (default: '_all').
Returns nothing.
25 26 27 28 |
# File 'lib/es-query-builder/tokenizer.rb', line 25 def initialize(query_fields = [], filter_fields = []) @query_fields = query_fields @filter_fields = filter_fields end |
Instance Method Details
#tokenize(query_string) ⇒ Object
Public: Tokenize the given query string for parsing it later.
query_string - The utf8 encoded String.
Examples
tokenize('hello OR tag:world')
# => [<Token: @full="hello", @type=:query, ...>,
# <Token: @full="OR", @type=:or, ...>,
# <Token: @full="tag:world", @type=:filter, ...>]
Returns an Array of Tokens.
42 43 44 45 46 |
# File 'lib/es-query-builder/tokenizer.rb', line 42 def tokenize(query_string) query_string.scan(QUERY_REGEXP).map do |match| create_token(*match) end end |