marko-bekhta opened a new issue, #13234:
URL: https://github.com/apache/lucene/issues/13234

   ### Description
   
   Assume there's a query parser created, e.g.:
   
   ```java
   Analyzer analyzer = new ClassicAnalyzer();
   QueryParser queryParser = new QueryParser( "field", analyzer );
   ```
   
   trying to parse simple ranges like:
   
   ```java
   // simple range query with no escapes works fine:
   Query query = queryParser.parse( "[ 1 TO 10 ]" );
   ```
   works as expected and a `TermRangeQuery` is created with no exceptions.
   
   But if the range in the string contains some escaped brackets -- it leads to 
a parsing exception. 
   Let's assume one would want to extend the query parser to work with 
date-time fields and would want to parse something like:
   
   ```java
   // another range query but now it has some escaping between the range 
brackets:
   query = queryParser.parse( "[ 
2024\\-01\\-01T01\\:01\\:01\\+01\\:00\\[Europe\\/Warsaw\\] TO 
2025\\-01\\-01T01\\:01\\:01\\+01\\:00\\[Europe\\/Warsaw\\] ]" );
   ```
   
   where all special characters are escaped, leads to:
   ```java
   Caused by: org.apache.lucene.queryparser.classic.ParseException: Encountered 
" "]" "] "" at line 1, column 50.
   Was expecting:
       "TO" ...
       
        at 
org.apache.lucene.queryparser.classic.QueryParser.generateParseException(QueryParser.java:1004)
        at 
org.apache.lucene.queryparser.classic.QueryParser.jj_consume_token(QueryParser.java:867)
        at 
org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:532)
        at 
org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:366)
        at 
org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:251)
        at 
org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:223)
        at 
org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:137)
        ... 4 more
   ```
   
   Note, the idea to do range queries for dates  is to have something along the 
lines:
   ```java
   QueryParser queryParser = new QueryParser( "field", analyzer ) {
        @Override
        protected Query newRangeQuery(String field, String part1, String part2, 
boolean startInclusive, boolean endInclusive) {
                var p1 = parseValue(part1);
                var p2 = parseValue(part2);
   
                return createRangeQueryForDates( field, p1, p2, startInclusive, 
endInclusive );
        }
   };
   ```
   but because of the parsing error described above, execution never reaches 
this point.
   
   ### Version and environment details
   
   Java version: 17.0.9, vendor: Amazon.com Inc.
   Default locale: en_US, platform encoding: UTF-8
   OS name: "linux", version: "6.7.10-200.fc39.x86_64", arch: "amd64", family: 
"unix"
   
   Lucene 9.10.0


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to