6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/elasticsearch/extensions/documents/utils.rb', line 6
def self.sanitize_for_query_string_query(query_string)
escaped_characters = Regexp.escape('/\\+-&|!(){}[]^~*?:')
query_string = query_string.gsub(/([#{escaped_characters}])/, '\\\\\1')
['AND', 'OR', 'NOT'].each do |word|
escaped_word = word.split('').map {|char| "\\#{char}" }.join('')
query_string = query_string.gsub(/\s*\b(#{word.upcase})\b\s*/, " #{escaped_word} ")
end
quote_count = query_string.count '"'
query_string = query_string.gsub(/(.*)"(.*)/, '\1\"\2') if quote_count % 2 == 1
query_string
end
|