Hello, I just merged a change to the Scorer contract: Scorer.score() must now return a positive float, see https://issues.apache.org/jira/browse/LUCENE-7996.
As a side effect, negative boosts are now disallowed. Since FunctionScoreQuery and FunctionQuery can't ensure that the value source only produces positive values, they return 0 when a negative value is produced. This might look like an annoying constraint, but this new requirement is going to help build new features and optimizations, in particular LUCENE-4100, which helps get great speedups for top-k queries sorted by score.
