lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler (JIRA)" <j...@apache.org>
Subject [jira] [Issue Comment Edited] (LUCENE-1768) NumericRange support for new query parser
Date Tue, 05 Jul 2011 23:12:16 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-1768?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13060186#comment-13060186
] 

Uwe Schindler edited comment on LUCENE-1768 at 7/5/11 11:10 PM:
----------------------------------------------------------------

I have some small things (maybe I will extend this comment when i review more of the code):

- in NumericRangeQueryNodeBuilder, i would use switch statement on the NumericField.DataType
and throw a UnsupportedEx if an unknown type is hit. I want to do this, because there is already
an issue open to extend NumericField and NumericRangeQuery by BYTE and SHORT. If we add those
types, the code gets unpredictable. With a switch statement and a exception in the defalt
clause, it fails predicatable. You should also add similar "default" statement throwing exceptions
in all switch statements on this enum type (in general it is good code style to do this).
- The current code always handles Date as Long (like Solr does). I am not sure, if this would
always be the best idea (see e.g. Lucene In Action book). Maybe we should add a possibility
to override the conversion Date <-> Number at a central place to customize? One of the
reasons to *not* support direkt DateRangeQueries was to make the representation of Dates as
Numbers open to the user.
- Method "NumericField.DataType getNumericDataType(Number number)": I would use instanceOf
checks (as all Number subclasses are final, this is fine and correct). They should be faster
than this reflection code.

This is all for now, more may be added tomorrow.

      was (Author: thetaphi):
    I have some small things (maybe I will extend this comment when i review more of the code):

- in NumericRangeQueryNodeBuilder, i would use switch statement on the NumericField.DataType
and throw a UnsupportedEx if an unknown type is hit. I want to do this, because there is already
an issue open to extend NumericField and NumericRangeQuery by BYTE and SHORT. If we add those
types, the code gets unpredictable. With a switch statement and a exception in the defalt
clause, it fails predicatable.
- The current code always handles Date as Long (like Solr does). I am not sure, if this would
always be the best idea (see e.g. Lucene In Action book). Maybe we should add a possibility
to override the conversion Date <-> Number at a central place to customize? One of the
reasons to *not* support direkt DateRangeQueries was to make the representation of Dates as
Numbers open to the user.
- Method "NumericField.DataType getNumericDataType(Number number)": I would use instanceOf
checks (as all Number subclasses are final, this is fine and correct). They should be faster
than this reflection code.

This is all for now, more may be added tomorrow.
  
> NumericRange support for new query parser
> -----------------------------------------
>
>                 Key: LUCENE-1768
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1768
>             Project: Lucene - Java
>          Issue Type: New Feature
>          Components: core/queryparser
>    Affects Versions: 2.9
>            Reporter: Uwe Schindler
>            Assignee: Adriano Crestani
>              Labels: contrib, gsoc, gsoc2011, lucene-gsoc-11, mentor
>             Fix For: 4.0
>
>         Attachments: week1.patch, week2.patch, week3.patch, week4.patch, week5-6.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: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message