benwtrent commented on PR #15380:
URL: https://github.com/apache/lucene/pull/15380#issuecomment-3462877989
Adding some additional context. It seems that `verifiedMatches`, since its
used in the disjunction scorers need to all be on the same doc.
See:
```
@Override
protected float score(DisiWrapper topList) throws IOException {
double score = 0;
for (DisiWrapper w = topList; w != null; w = w.next) {
score += w.scorable.score();
}
return (float) score;
}
```
That just assumes the topList (which might be coming from verifiedMatches),
are all on the same doc, and that doc matches the assumed iteration position.
We only saw this desynchronizing as an issue when we saw an EOF. But it
honestly seems like we are just scoring things incorrectly, fairly often.
Here are some screen shots (sorry for the quality, but wanted to provide
some tangible proof of what we are seeing).
Here is one where we are obviously scoring a different document as the
verifiedMatches point to a different doc than the iterator.
<img width="720" height="620" alt="image"
src="https://github.com/user-attachments/assets/39338ac9-9e32-47ad-9136-aba70553b950"
/>
Here is one that trips an EOF as the verifiedMatches is iterated to
NO_MORE_DOCs, but the iterator assumes its on a valid document.
<img width="720" height="620" alt="image"
src="https://github.com/user-attachments/assets/4614ea08-8ba0-4cfc-9ef1-5eb9a7b33cdc"
/>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]