lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dilip Nimkar (JIRA)" <j...@apache.org>
Subject [jira] Created: (LUCENE-800) Incorrect parsing by QueryParser.parse() when it encounters backslashes (always eats one backslash.)
Date Tue, 13 Feb 2007 19:51:05 GMT
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


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: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message