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 > >