lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adriano Crestani (JIRA)" <>
Subject [jira] [Commented] (LUCENE-1768) NumericRange support for new query parser
Date Mon, 11 Jul 2011 22:01:00 GMT


Adriano Crestani commented on LUCENE-1768:

I am not sure if this is really a break when you change inheritance. If code still compiles,
its no break, if classes were renamed its more serious. I am not sure, if implementation classes
(and -names) should be covered by the backwards compatibility. In my opinion, mainly the configuration
and interfaces of the QP must be covered by backwards policy.

I didn't see any class renaming, I need to double check Vinicius's patches. But he did change
the query node inheritance, which may affect how processors and builder (specially QueryNodeTreeBuilder)
work. I am not saying it is not possible to implement his approach on 3.x, but he will need
to deal differently with query nodes classes he created. As I said before, what he did is
good and clean, I like the way it is, but it will break someone's code if pushed to 3.x. So
if you ask me whether to push it to 3.x, I say YES, just make sure to not break the query
node structure that people may be relying on.

As we are now at mid-time, it would be a good idea, to maybe add some extra syntax support
for numerics, like "<" and ">"? We should also add tests/support for half-open ranges,
so syntax like "[* TO 1.0]" should also be supported (I am not sure, if TermRangeQueryNode
supports this, but numerics should do this in all cases) - the above syntax is also printed
out on NumericRangeQuery.toString(), if one of the bounds is null. The latter could be easily
implemented by checking for "*" as input to the range bounds and map those special "values"
to NULL. Adding support for "<" and ">" (also "<=", ">=") needs knowledge of JavaCC
parser language. Vinicius, have you ever worked with JavaCC, so do you think you will be able
to extend the syntax?

I still need to investigate the bugs Vinicius reported (should have been created a JIRA for
that already), I never really tried open ranges in contrib QP. And if Vinicius thinks he will
have time and skills to do the JAVACC change to support those new operators, go for it! And
remember Vinicius, you don't need to do everything during gsoc, you are always welcome to
contribute code whenever you want :)

> NumericRange support for new query parser
> -----------------------------------------
>                 Key: LUCENE-1768
>                 URL:
>             Project: Lucene - Java
>          Issue Type: New Feature
>          Components: core/queryparser
>    Affects Versions: 2.9
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>              Labels: contrib, gsoc, gsoc2011, lucene-gsoc-11, mentor
>             Fix For: 4.0
>         Attachments: week-7.patch, week1.patch, week2.patch, week3.patch, week4.patch,
> It would be good to specify some type of "schema" for the query parser in future, to
automatically create NumericRangeQuery for different numeric types? It would then be possible
to index a numeric value (double,float,long,int) using NumericField and then the query parser
knows, which type of field this is and so it correctly creates a NumericRangeQuery for strings
like "[1.567..*]" or "(1.787..19.5]".
> There is currently no way to extract if a field is numeric from the index, so the user
will have to configure the FieldConfig objects in the ConfigHandler. But if this is done,
it will not be that difficult to implement the rest.
> The only difference between the current handling of RangeQuery is then the instantiation
of the correct Query type and conversion of the entered numeric values (simple Number.valueOf(...)
cast of the user entered numbers). Evenerything else is identical, NumericRangeQuery also
supports the MTQ rewrite modes (as it is a MTQ).
> Another thing is a change in Date semantics. There are some strange flags in the current
parser that tells it how to handle dates.

This message is automatically generated by JIRA.
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message