Module: FullSearch::QueryParser

Defined in:
lib/full_search/query_parser.rb

Defined Under Namespace

Classes: Token

Constant Summary collapse

MAX_QUERY_LENGTH =
255

Class Method Summary collapse

Class Method Details

.parse(query) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/full_search/query_parser.rb', line 12

def parse(query)
  query = query.to_s.strip
  validate!(query)
  tokens = tokenize(query)
  return [] if tokens.empty?

  or_clauses = split_or(tokens)

  if or_clauses.size == 1
    parse_and_clause(or_clauses.first)
  else
    [:or, or_clauses.map { |clause| parse_and_clause(clause) }]
  end
end

.to_match_expression(parsed) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/full_search/query_parser.rb', line 27

def to_match_expression(parsed)
  return '""' if parsed.empty?

  type, value = parsed
  case type
  when :and
    build_and_expression(value)
  when :or
    value.map { |sub| to_match_expression(sub) }.join(" OR ")
  else
    node_to_match(parsed)
  end
end