Description
jim.ferenczi told me about an assertion error that he ran into while playing with WANDScorer.
WANDScorer tries to not have to deal with accuracy issues on floating-point numbers. In order to do this, it turns all scores into integers by multiplying them by a scaling factor, and then rounding minimum competitive scores down and rounding maximum scores up. This scaling factor is computed in the constructor in such a way that scores end up in the 0..65536 range. Sub scorers that have a maximum score of +Infty are ignored.
The assertion is triggered in the rare case that a Scorer returns +Infty for its maximum score when computing the scaling factor but then returns finite values that are greater than the maximum scores of other clauses when asked for the maximum score over smaller ranges of doc ids.