Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-881

QueryParser escaping/parsin issue with strings starting/ending with ||

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Trivial
    • Resolution: Fixed
    • 2.1, 2.2
    • None
    • core/queryparser
    • None
    • MAC OS X 10.4.7, J2SE 5.0 Release 4

    • New

    Description

      There is a problem with query parser when search string starts/ends with ||. When string contains || in the middle like 'something || something' everything runs without a problem.

      Part of code:
      searchText = QueryParser.escape(searchText);
      QueryParser parser = null;
      parser = new QueryParser(fieldName, new CustomAnalyser());
      parser.parse(searchText);

      CustomAnalyser class extends Analyser. Here is the only redefined method:

      @Override
      public TokenStream tokenStream(String fieldName, Reader reader)

      { return new PorterStemFilter( (new StopAnalyzer()).tokenStream(fieldName, reader)); }

      I have tested this on Lucene 2.1 and latest source I have checked-out from SVN (Revision 538867) and in both cases parsing exception was thrown.

      Part of Stack Trace (Lucene - SVN checkout - Revision 538867):
      Cannot parse 'someting ||': Encountered "<EOF>" at line 1, column 11.
      Was expecting one of:
      <NOT> ...
      "+" ...
      "-" ...
      "(" ...
      "*" ...
      <QUOTED> ...
      <TERM> ...
      <PREFIXTERM> ...
      <WILDTERM> ...
      "[" ...
      "{" ...
      <NUMBER> ...

      org.apache.lucene.queryParser.ParseException: Cannot parse 'someting ||': Encountered "<EOF>" at line 1, column 11.
      Was expecting one of:
      <NOT> ...
      "+" ...
      "-" ...
      "(" ...
      "*" ...
      <QUOTED> ...
      <TERM> ...
      <PREFIXTERM> ...
      <WILDTERM> ...
      "[" ...
      "{" ...
      <NUMBER> ...

      at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:150)

      Part of Stack Trace (Lucene 2.1):
      Cannot parse 'something ||': Encountered "<EOF>" at line 1, column 12.
      Was expecting one of:
      <NOT> ...
      "+" ...
      "-" ...
      "(" ...
      "*" ...
      <QUOTED> ...
      <TERM> ...
      <PREFIXTERM> ...
      <WILDTERM> ...
      "[" ...
      "{" ...
      <NUMBER> ...

      org.apache.lucene.queryParser.ParseException: Cannot parse 'something ||': Encountered "<EOF>" at line 1, column 12.
      Was expecting one of:
      <NOT> ...
      "+" ...
      "-" ...
      "(" ...
      "*" ...
      <QUOTED> ...
      <TERM> ...
      <PREFIXTERM> ...
      <WILDTERM> ...
      "[" ...
      "{" ...
      <NUMBER> ...

      at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:149)

      Attachments

        1. lucene-881.patch
          2 kB
          Michael Busch

        Activity

          People

            michaelbusch Michael Busch
            smarjan Slobodan Marjanovic
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: