[ https://issues.apache.org/jira/browse/LUCENE-1768?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12740340#action_12740340 ]
Luis Alves commented on LUCENE-1768: ------------------------------------ You could still do something similar by simply override RangeQueryNodeBuilder.build(QueryNode queryNode), but this is not clean (it is kind of a hack). A clean implementation would allow the user to configure the field types (which the "new flexible queryparser" does). I'm new to NumericRange Queries and Rangequeries in general, but here is what I think it should look like. Here is a seudo java example: {code} final String defaultField = "default"; final String monthField = "month"; final String hourField = "hour"; final String distanceField = "distance"; final String moneyField = "money"; Map<CharSequence, RangeTools.Type> rangeTypes = new HashMap<CharSequence, RangeTools.Type>(); // set a field specific range type per field rangeTypes.put(monthField, new RangeTools.Type(RangeUtils.DATE, DateTools.Resolution.MONTH) ); rangeTypes.put(hourField, new RangeUtils.Type(RangeUtils.DATE, DateTools.Resolution.HOUR) ); rangeTypes.put(distanceField, RangeUtils.getType(RangeUtils.NUMERIC, RangeUtils.NumericType.LONG, NumericUtils.PRECISION_STEP_DEFAULT) ); rangeTypes.put(moneyField, RangeUtils.getType(RangeUtils.NUMERIC, RangeUtils.NumericType.Type.FLOAT, NumericUtils.PRECISION_STEP_DEFAULT) ); StandardQueryParser qp = new StandardQueryParser(); // set default range type to Int default precision qp.setDefaultRangeType(RangeUtils.getType(RangeUtils.NUMERIC, RangeUtils.NumericType.INT, NumericUtils.PRECISION_STEP_DEFAULT)); // set field range types qp.setRangeTypes(rangeTypes); Query q = qp.parser(" month:[01/01/2004 TO 01/01/2005] distance:[1000 to 2000] money: [23.50 to 50.99]"); {code} > 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: QueryParser > Affects Versions: 2.9 > Reporter: Uwe Schindler > Assignee: Uwe Schindler > Fix For: 2.9 > > > 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. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org