Re: Proposing 10.5.1 bugfix release
Adrien Grand <[email protected]> Wed, 1 Jul 2026 13:49:33 +0200
| Newsgroups | gmane.comp.jakarta.lucene.devel |
|---|---|
| Message-ID | <CAPsWd+OWqhwhBukFXjAOHahV9P7KbRV29F=xXY-zrhiUor1GqQ@mail.gmail.com> |
--000000000000a4c5b106558b4908 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I see, this is a 50kB allocation per segment, which is fine under normal usage, but becomes noticeable with percolator queries which create a new MaxScoreBulkScorer for every document? In general, bulk scorers will want to allocate large arrays/bit sets to help with bulk processing of documents, some other bulk scorers do this as well: BatchScoreBulkScorer, BlockMaxConjunctionBulkScorer, DenseConjunctionBulkScorer, DisjunctionMaxBulkScorer. I wonder if a better fix would be to disable bulk scoring for percolator/monitor-style usage and force doc-at-a-time evaluation by using ScorerSupplier#get() (possibly wrapped in a DefaultBulkScorer if you'd like to consume hits via the BulkScorer API while still doing doc-at-a-time evaluation) instead of ScorerSupplier#bulkScorer(). On Wed, Jul 1, 2026 at 12:40=E2=80=AFPM Alan Woodward <[email protected]= > wrote: > Hi all, > > We=E2=80=99ve found a regression in 10.5.0 due to eager allocation of lar= ge array > buffers in MaxScoreBulkScorer - fix proposed here: > https://github.com/apache/lucene/pull/16316 > > This particularly hits boolean queries with an expensive two-phase > subclause (in our case, some percolator queries got a lot slower). I thi= nk > it probably warrants a 10.5.1 bugfix. > > - Alan > --=20 Adrien --000000000000a4c5b106558b4908 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">I see, this is a 50kB allocation per segment, which is fin= e under normal usage, but becomes noticeable with percolator queries which = create a new MaxScoreBulkScorer for every document?<div><br></div><div>In g= eneral, bulk scorers will want to allocate large arrays/bit sets to help wi= th bulk processing of documents, some other bulk scorers do this as well:= =C2=A0BatchScoreBulkScorer,=C2=A0BlockMaxConjunctionBulkScorer,=C2=A0DenseC= onjunctionBulkScorer,=C2=A0DisjunctionMaxBulkScorer. I wonder if a better f= ix would be to disable bulk scoring for percolator/monitor-style usage and = force doc-at-a-time evaluation by using ScorerSupplier#get() (possibly wrap= ped in a DefaultBulkScorer if you'd like to consume hits via the BulkSc= orer API while still doing doc-at-a-time evaluation) instead of ScorerSuppl= ier#bulkScorer().</div></div><br><div class=3D"gmail_quote gmail_quote_cont= ainer"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jul 1, 2026 at 12:40= =E2=80=AFPM Alan Woodward <<a href=3D"mailto:[email protected]">romse= [email protected]</a>> wrote:<br></div><blockquote class=3D"gmail_quote" s= tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad= ding-left:1ex"><div>Hi all,<div><br></div><div>We=E2=80=99ve found a regres= sion in 10.5.0 due to eager allocation of large array buffers in MaxScoreBu= lkScorer - fix proposed here:=C2=A0<a href=3D"https://github.com/apache/luc= ene/pull/16316" target=3D"_blank">https://github.com/apache/lucene/pull/163= 16</a></div><div><br></div><div>This particularly hits boolean queries with= an expensive two-phase subclause (in our case, some percolator queries got= a lot slower).=C2=A0 I think it probably warrants a 10.5.1 bugfix.</div><d= iv><br></div><div>- Alan</div></div></blockquote></div><div><br clear=3D"al= l"></div><div><br></div><span class=3D"gmail_signature_prefix">-- </span><b= r><div dir=3D"ltr" class=3D"gmail_signature">Adrien</div> --000000000000a4c5b106558b4908--