Hello,
The new JIRA issue has been created -
https://issues.apache.org/jira/browse/LUCENE-5014
Thank you for trying it,

roman


On Wed, May 15, 2013 at 7:34 AM, Roman Chyla <roman.ch...@gmail.com> wrote:

> Hi Jan,
>
> Thanks for thumbs up
>
>
> On Tue, May 14, 2013 at 11:14 AM, Jan Høydahl <jan....@cominvent.com>wrote:
>
>> Hello :)
>>
>> I think it has been the intention of the dev community for a long time to
>> start using the flex parser framework, and in this regard this contribution
>> is much welcome as a kickstarter for that.
>> I have not looked much at the code, but I hope it could be a starting
>> point for writing future parsers in a less "spaghetti" way.
>>
>> One question. Say we want to add a new operator such as NEAR/N. Ideally
>> this should be added in Lucene, then all the Solr QParsers extending the
>> lucene flex parser would benefit from the same new operator. Would this be
>> easily achieved with your code you think? We also have a ton of
>>
>
>
> to add a new operator is very simple on the syntax level -- ie. when I
> want the NEAR/x operator, I just change the ANTLR grammar, which produces
> the approripate abstract syntax tree. The flex parser is consuming this.
>
> Yet, imagine the following query
>
> dog NEAR/5 cat
>
> if you are using synonyms, an analyzer could have expanded dog with
> synonyms, it becomes something like
>
> (dog | canin) NEAR/5 cat
>
> and since Lucene cannot handle these queries, the flex builder must
> rewrite them, effectively producing
>
> SpanNear(SpanOr(dog | cat), SpanTerm(cat), 5)
>
> but you could also argue, that a better way to handle this query is:
>
> SpanNear(dog, cat, 5) OR SpanNear(canin, cat, 5)
>
> If that is the case, then a different builder will have to be used -
>
> Just an example where syntax is relatively simple, but the semantics is
> the hard part. But I believe the flex parser gives all necessary tools to
> deal with that and avoid the spaghetti problem
>
>
> --roman
>
>
>
>> feature requests on the eDisMax parser for new kinds of query syntax
>> support. Before we start implementing that on top of the
>> already-hard-to-maintain eDismax code, we should think about
>> re-implementing eDismax on top of flex, perhaps on top of Roman's contrib
>> here?
>>
>
> btw: i am using edismax in one of my grammars -- ie. users can type: query
> AND edismax(foo OR (dog AND cat)) -- and the "edismax(....)" will be parsed
> by edismax, but I hit the problems there as well, it is not doing such a
> nice job with operators and of course it doesn't know how to handle
> multi-token synonym expansion, but I think it could be nicely extracted
> into a flex processor and effectively become a plugin for a solr parser
> (now, it is a parser of its own, which makes it hard to extend)
>
>
>
>
>
>>
>>  --
>> Jan Høydahl, search solution architect
>> Cominvent AS - www.cominvent.com
>>
>> 14. mai 2013 kl. 17:07 skrev Roman Chyla <roman.ch...@gmail.com>:
>>
>> Hello World!
>>
>> Following the recommended practice I'd like to let you know that I am
>> about to start porting our existing query parser into JIRA with the aim of
>> making it available to Lucene/SOLR community.
>>
>> The query parser is built on top of the flexible query parser, but it
>> separates the parsing (ANTLR) and the query building - it allows for a very
>> sophisticated custom logic and has self-retrospecting methods, so one can
>> actually 'see' what is going on - I have had lots of FUN working with it
>> (which I consider to be a feature, not a shameless plug ;)).
>>
>> Some write up is here:
>> http://29min.wordpress.com/category/antlrqueryparser/
>>
>> You can see the source code at:
>>
>> https://github.com/romanchyla/montysolr/tree/master/contrib/antlrqueryparser
>>
>>
>> If you think this project is duplicating something or even being useless
>> (I hope not!) please let me know, stop me, say something...
>>
>> Thank you!
>>
>>   roman
>>
>>
>>
>

Reply via email to