lib/chef/solr_query/lucene.treetop in chef-0.10.0.beta.1 vs lib/chef/solr_query/lucene.treetop in chef-0.10.0.beta.2
- old
+ new
@@ -25,11 +25,11 @@
rule expression
operation / group / field / field_range / term / string
end
rule term
- keyword valid_letter+ <Term> / !keyword valid_letter+ <Term>
+ keyword valid_letter+ <Term> / !keyword !"?" valid_letter <Term>
end
rule field
field_name ":" (term/string/group) <Field>
end
@@ -43,11 +43,11 @@
rule field_name
!keyword valid_letter+ <FieldName>
end
rule range_value
- valid_letter+ <RangeValue>
+ valid_letter+ <RangeValue> / "*" <RangeValue>
end
rule group
space? '(' body ')' space? <Group>
end
@@ -100,12 +100,10 @@
'+' <RequiredOperator>
end
rule prohibited_op
!valid_letter prohibited_operator (field/field_range/term/string) <UnaryOp>
- /
- prohibited_operator (field/field_range/term/string) <UnaryOp>
end
rule prohibited_operator
'-' <ProhibitedOperator>
end
@@ -113,31 +111,38 @@
rule boost_op
(term/string) '^' fuzzy_param <BoostOp>
end
rule fuzzy_op
- (term/string) '~' fuzzy_param? <FuzzyOp>
+ (term/string) '~' fuzzy_param? (space / !valid_letter) <FuzzyOp>
end
rule fuzzy_param
[0-9] '.'? [0-9] <FuzzyParam> / [0-9]+ <FuzzyParam>
end
rule string
- #'"' (!'"' . / '\"')* '"' <Phrase>
'"' term (space term)* '"' <Phrase>
end
rule keyword
'AND' / 'OR' / 'NOT'
end
rule valid_letter
- [a-zA-Z0-9*_+.-] / '\\' special_char
+ start_letter+ ([a-zA-Z0-9*?_.-] / '\\' special_char)*
end
+ rule start_letter
+ [a-zA-Z0-9._*] / '\\' special_char
+ end
+
+ rule end_letter
+ [a-zA-Z0-9*?_.] / '\\' special_char
+ end
+
rule special_char
- [!(){}\[\]^"~*?:\\]
+ [-+&|!(){}\[\]^"~*?:\\]
end
rule space
[\s]+
end