- operator not supported on field
Closed this issue · 0 comments
thoward commented
The following query throws an exception:
var results = lucenequeryparser.parse('title:"The Right Way" AND -text:go');
but this works fine:
var results = lucenequeryparser.parse('title:"The Right Way" AND text:-go');
Any chance this can get updated to support both?
I only did some super simple testing, but the following seemed to do the trick. I really don't know much about PEG so if something isn't right please let me know.
field_exp
= op:prefix_operator_exp?fieldname:fieldname? range:range_operator_exp
{
range['field'] =
fieldname == ''
? "<implicit>"
: fieldname;
if('' != op)
{
range['prefix'] = op;
}
return range;
}
/ op:prefix_operator_exp?fieldname:fieldname node:paren_exp
{
node['field']= fieldname;
if('' != op)
{
node['prefix'] = op;
}
return node;
}
/ op:prefix_operator_exp?fieldname:fieldname? term:term
{
var fieldexp = {
'field':
fieldname == ''
? "<implicit>"
: fieldname
};
if('' != op)
{
fieldexp['prefix'] = op;
}
for(var key in term)
fieldexp[key] = term[key];
return fieldexp;
}
NOTE: Originally files on Bitbucket by an anonymous user on 2012-07-17.