QueryParser differences between Java and .NET
---------------------------------------------
Key: LUCENENET-423
URL: https://issues.apache.org/jira/browse/LUCENENET-423
Project: Lucene.Net
Issue Type: Bug
Affects Versions: Lucene.Net 2.9.2, Lucene.Net 2.9.4, Lucene.Net 2.9.4g
Reporter: Christopher Currens
When trying to do a RangeQuery that uses dates in a certain format, .NET
behaves differently from its Java counterpart. The code is the same between
them, but as far as I can tell, it appears that it is a difference in the way
Java parses dates vs how .NET parses dates. To reproduce:
{code:java}
var queryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29,
"FullText", new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
var query = queryParser.Parse("Field:[2001-01-17 TO 2001-01-20]");
{code}
You'll notice that query looks like the old DateField format (eg "0g1d64542").
If you do the same query in Java (or Luke), you'll notice the query gets parsed
as if it were a RangeQuery of string. AFAIK, Java cannot parse a string
formatted in that way. If you change the string to use / instead of - in the
java, you'll get one that uses DateResolutions and DateTools.DateToString().
It seems an appropriate fix for this, if we wanted to keep this behavior
similar to Java, would be to write our own DateTime parser that behaved the
same way to Java's parser.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira