Cool. Glad to help. :) Cheers, Edward
Em qua, 22 de jan de 2020 16:44, Arnold Bronley <arnoldbron...@gmail.com> escreveu: > I knew about the + and other signs and their connections to MUST and other > operators. What I did not understand was why it was not adding parentheses > around the expression. In your first replay you mentioned that - 'roughly, > a builder for each query enclosed in "parenthesis"' - that was the key > point I was missing. > > On Wed, Jan 22, 2020 at 2:40 PM Arnold Bronley <arnoldbron...@gmail.com> > wrote: > > > Thanks, Edaward. This was the exact answer I was looking for :) > > > > On Wed, Jan 22, 2020 at 1:08 PM Edward Ribeiro <edward.ribe...@gmail.com > > > > wrote: > > > >> If you are using Lucene's BooleanQueryBuilder then you need to do > nesting > >> of your queries (roughly, a builder for each query enclosed in > >> "parenthesis"). > >> > >> A query like (text:child AND text:toys) OR age:12 would be: > >> > >> Query query1 = new TermQuery(new Term("text", "toys")); > >> Query query2 = new TermQuery(new Term("text", "children")); > >> Query query3 = new TermQuery(new Term("age", "12")); > >> > >> BooleanQuery.Builder andBuilder = new BooleanQuery.Builder(); > >> andBuilder.add(query1, BooleanClause.Occur.MUST); > >> andBuilder.add(query2, BooleanClause.Occur.MUST); > >> > >> BooleanQuery.Builder builder = new BooleanQuery.Builder(); > >> builder.add(andBuilder.build(), BooleanClause.Occur.SHOULD); > >> builder.add(query3, BooleanClause.Occur.SHOULD); > >> > >> BooleanQuery booleanQuery = builder.build(); > >> > >> This booleanQuery.toString() will be: > >> > >> (+text:toys +text:children) age:12 > >> > >> That is the parsing of "(text:child AND text:toys) OR age:12" > >> > >> > >> Edward > >> > >> On Tue, Jan 21, 2020 at 5:24 PM Arnold Bronley <arnoldbron...@gmail.com > > > >> wrote: > >> > > >> > Hi, > >> > > >> > BooleanQueryBuilder is not adding parenthesis around the query. It > >> > only adds + sign at the start of the query but not the parentheses > >> around > >> > the query. Why is that? How should I add it? > >> > > >> > booleanQueryBuilder.add(query, BooleanClause.Occur.MUST) > >> > > >