Hi,

Following is an output from my test code, where the left hand side is
the query and right hand side is the parsed query print. There are two
sets , one with the default operator set to OR , the other with
default set to AND

The output looks funny for the  for the first example when the
operator is set to AND

Is this a bug. Can some one point me to a bug if it is or help me
understand so I can explain this behavior.

-Antony Sequeira

Tets code output follows:
Testing with default operator set to OR
(fooooo AND barrrr OR "fooooo barrrr") -> +xxxx:fooooo +xxxx:barrrr
xxxx:"fooooo barrrr"
(fooooo AND (barrrr OR "fooooo barrrr")) -> +xxxx:fooooo +(xxxx:barrrr
xxxx:"fooooo barrrr")
((fooooo AND barrrr) OR "fooooo barrrr")  -> (+xxxx:fooooo
+xxxx:barrrr) xxxx:"fooooo barrrr"
Testing with default operator set to AND
(fooooo AND barrrr OR "fooooo barrrr") -> +xxxx:fooooo xxxx:barrrr
xxxx:"fooooo barrrr"
(fooooo AND (barrrr OR "fooooo barrrr")) -> +xxxx:fooooo +(xxxx:barrrr
xxxx:"fooooo barrrr")
((fooooo AND barrrr) OR "fooooo barrrr")  -> (+xxxx:fooooo
+xxxx:barrrr) xxxx:"fooooo barrrr"


Test code follows:


import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.queryParser.QueryParser.Operator;
import org.apache.lucene.search.Query;

public class QueryParserBug {

   String [] testQueries = {
           "(fooooo AND barrrr OR \"fooooo barrrr\")",
           "(fooooo AND (barrrr OR \"fooooo barrrr\"))",
           "((fooooo AND barrrr) OR \"fooooo barrrr\") ",
   };

   QueryParser queryParser;

   private Analyzer analyzer;

   private void log(String msg) {
       System.out.println(msg);
   }

   QueryParserBug() throws Exception {
       analyzer = new StandardAnalyzer();
       queryParser = new QueryParser("xxxx",analyzer);
   }

   public static void main(String [] args) {
       try {
           new QueryParserBug().test(Operator.OR);
           new QueryParserBug().test(Operator.AND);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

   private void test(Operator opr) throws ParseException {
       log("Testing with default operator set to " + opr);
       queryParser.setDefaultOperator(opr);
       for (String query: testQueries) {
           Query lq = queryParser.parse(query);
           log(query + " -> " + lq.toString());
       }

   }

}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to