Hi Adrien
   Glad to have your opinion.I am reading your excellent articles  on
elastic blog.

Best regards


Adrien Grand <jpou...@gmail.com> 于2023年9月19日周二 21:32写道:

> Hi Yang,
>
> It would be legal for Lucene to perform such optimizations indeed.
>
> On Tue, Sep 19, 2023 at 3:27 PM YouPeng Yang <yypvsxf19870...@gmail.com>
> wrote:
> >
> > Hi All
> >
> >  Sorry to bother you.The happiest thing is  studying the Lucene source
> codes,thank you for all the  great works .
> >
> >
> >   About the BooleanQuery.I am encountered by a question about the
> execution of BooleanQuery:although,BooleanQuery#rewrite has done some
> works to remove duplicate FILTER,SHOULD clauses.however still the same term
> query can been executed the several times.
> >
> >   I copied the test code in the TestBooleanQuery to confirm my
> assumption.
> >
> >   Unit Test Code as follows:
> >
> >
> >
> > BooleanQuery.Builder qBuilder = new BooleanQuery.Builder();
> >
> > qBuilder = new BooleanQuery.Builder();
> >
> > qBuilder.add(new TermQuery(new Term("field", "b")), Occur.FILTER);
> >
> > qBuilder.add(new TermQuery(new Term("field", "a")), Occur.SHOULD);
> >
> > qBuilder.add(new TermQuery(new Term("field", "d")), Occur.SHOULD);
> >
> > BooleanQuery.Builder nestQuery  = new BooleanQuery.Builder();
> >
> > nestQuery.add(new TermQuery(new Term("field", "b")), Occur.FILTER);
> >
> > nestQuery.add(new TermQuery(new Term("field", "a")), Occur.SHOULD);
> >
> > nestQuery.add(new TermQuery(new Term("field", "d")), Occur.SHOULD);
> >
> > qBuilder.add(nestQuery.build(),Occur.SHOULD);
> >
> > qBuilder.setMinimumNumberShouldMatch(1);
> >
> > BooleanQuery q = qBuilder.build();
> >
> > q = qBuilder.build();
> >
> > assertSameScoresWithoutFilters(searcher, q);
> >
> >
> > In this test, the top boolean query(qBuilder) contains 4 clauses(3
> simple term-query ,1 nested boolean query that contains the same 3
> term-query).
> >
> > The underlying execution is that all the 6 term query were executed(see
> TermQuery.Termweight#getTermsEnum()).
> >
> > Apparently and theoretically,  the executions can be merged to increase
> the time,right?.
> >
> >
> > So,is it possible or necessary  that Lucene merge the execution to
> optimize the query performance, even though I know the optimization may be
> difficult.
> >
> >
> >
>
>
> --
> Adrien
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
> For additional commands, e-mail: dev-h...@lucene.apache.org
>
>

Reply via email to