Hi Dawid, Thanks for your email. It seems StandardQueryParser is free from this unexpected behavior.
I used the code below with Lucene 6.2.1 (org.apache.lucene.queryparser.classic.QueryParser) QueryParser parser = new QueryParser("test", new WhitespaceAnalyzer()); parser.setDefaultOperator(QueryParser.Operator.AND); Query query = parser.parse("foo AND bar OR baz "); System.out.println(query.toString()); parser.setDefaultOperator(QueryParser.Operator.OR); query = parser.parse("foo AND bar OR baz "); System.out.println(query.toString()); I can also reproduce it on Elasticsearch 2.2 which uses Lucene 5.4.0 $ curl -s 'localhost:9200/test/_search?pretty' -d '{ "query": { "query_string": { "query": "foo AND bar OR baz" , "default_operator": "and" } } , "profile" : true}' | grep luce "lucene" : "+_all:foo _all:bar _all:baz", ... $ curl -s 'localhost:9200/test/_search?pretty' -d '{ "query": { "query_string": { "query": "foo AND bar OR baz" , "default_operator": "or" } } , "profile" : true}' | grep luce "lucene" : "+_all:foo +_all:bar _all:baz", ... Elasticsearch uses class called MapperQueryParser which extends org.apache.lucene.queryparser.classic.QueryParser -- Paweł Róg On Wed, Nov 9, 2016 at 6:10 PM, Dawid Weiss <dawid.we...@gmail.com> wrote: > Which Lucene version and which query parser is this? Can you provide a > test case/ code sample? > I just tried with StandardQueryParser and for: > > sqp.setDefaultOperator(StandardQueryConfigHandler.Operator.AND); > dump(sqp.parse("foo AND bar OR baz", "field_a")); > sqp.setDefaultOperator(StandardQueryConfigHandler.Operator.OR); > dump(sqp.parse("foo AND bar OR baz", "field_a")); > > I get the same result: > > BooleanQuery: +field_a:foo +field_a:bar field_a:baz > > Dawid > > On Wed, Nov 9, 2016 at 6:04 PM, Pawel Rog <ppp.pawel...@gmail.com> wrote: > > Hi Eric, > > Thank you for your email. > > I understand that Lucene queries are not in boolean logic. My point is > only > > that I would expect identical Lucene queries build from the same input > > string. My intuition says that default operator should not matter in 2 > > examples I presented in previous email. > > > > -- > > Paweł Róg > > > > On Wed, Nov 9, 2016 at 4:32 PM, Erick Erickson <erickerick...@gmail.com> > > wrote: > > > >> Lucene queries aren't boolean logic. You can simulate boolean logic by > >> explicitly parenthesizing, here's an excellent blog on this: > >> > >> https://lucidworks.com/blog/why-not-and-or-and-not/ > >> > >> Best, > >> Erick > >> > >> On Wed, Nov 9, 2016 at 1:37 AM, Pawel Rog <ppp.pawel...@gmail.com> > wrote: > >> > Hello , > >> > I have a query `foo AND bar OR baz`. When I use "AND" as a default > >> operator > >> > this is the resulting Lucene query: > >> > > >> > `+test:foo test:bar test:baz` > >> > > >> > When I use "OR" this is the resulting query > >> > > >> > `+test:foo +test:bar test:baz` > >> > > >> > > >> > I expected these two return exactly the same Lucene query because I > used > >> > operator explicitly. I thought that the default operator is used only > >> when > >> > operator is not explicitly mentioned in the query. Am I missing > something > >> > or this is not expected behavior (bug)? > >> > > >> > -- > >> > Paweł Róg > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > >> For additional commands, e-mail: java-user-h...@lucene.apache.org > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org > >