[ https://issues.apache.org/jira/browse/LUCENE-800?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Busch resolved LUCENE-800. ---------------------------------- Resolution: Fixed Fix Version/s: 2.2 Thanks Doron for reviewing and for the additional tests! I just committed this and LUCENE-372. Together these patches fix the two problems descibed in this issue. > Incorrect parsing by QueryParser.parse() when it encounters backslashes > (always eats one backslash.) > ---------------------------------------------------------------------------------------------------- > > Key: LUCENE-800 > URL: https://issues.apache.org/jira/browse/LUCENE-800 > Project: Lucene - Java > Issue Type: Bug > Components: QueryParser > Reporter: Dilip Nimkar > Assigned To: Michael Busch > Priority: Minor > Fix For: 2.2 > > Attachments: Lucene-800-more-tests.patch, Lucene-800.patch > > > Test code and output follow. Tested Lucene 1.9 version only. Affects hose > who would index/search for Lucene's reserved characters. > Description: When an input search string has a sequence of N (java-escaped) > backslashes, where N >= 2, the QueryParser will produce a query in which that > sequence has N-1 backslashes. > TEST CODE: > Analyzer analyzer = new WhitespaceAnalyzer(); > String[] queryStrs = {"item:\\\\", > "item:\\\\*", > "(item:\\\\ item:ABCD\\\\))", > "(item:\\\\ item:ABCD\\\\)"}; > for (String queryStr : queryStrs) { > System.out.println("--------------------------------------"); > System.out.println("String queryStr = " + queryStr); > Query luceneQuery = null; > try { > luceneQuery = new QueryParser("_default_", analyzer).parse(queryStr); > System.out.println("luceneQuery.toString() = " + > luceneQuery.toString()); > } catch (Exception e) { > System.out.println(e.getClass().toString()); > } > } > OUTPUT (with remarks in comment notation:) > -------------------------------------- > String queryStr = item:\\ > luceneQuery.toString() = item:\ //One backslash has disappeared. > Searcher will fail on this query. > -------------------------------------- > String queryStr = item:\\* > luceneQuery.toString() = item:\* //One backslash has disappeared. > This query will search for something unintended. > -------------------------------------- > String queryStr = (item:\\ item:ABCD\\)) > luceneQuery.toString() = item:\ item:ABCD\) //This should have thrown a > ParseException because of an unescaped ')'. It did not. > -------------------------------------- > String queryStr = (item:\\ item:ABCD\\) > class org.apache.lucene.queryParser.ParseException //...and this one > should not have, but it did. -- 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]