lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Edward Ribeiro <edward.ribe...@gmail.com>
Subject Re: BooleanQueryBuilder is not adding parenthesis around the query
Date Wed, 22 Jan 2020 21:56:06 GMT
Cool. Glad to help. :)

Cheers,
Edward

Em qua, 22 de jan de 2020 16:44, Arnold Bronley <arnoldbronley@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 <arnoldbronley@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.ribeiro@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 <arnoldbronley@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)
> >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message