Hi
We are using Solr 4 with a custom query tree. For boolean queries, the score
should not just be the sum of all sub-scores, but instead it should be the mean
value of all the sub-scores, which is equal to dividing the sum of the
sub-scores by the number of sub-scorers.
To achieve this, I wanted to use the coord factor. So I'm using a custom
similarity with the following method:
@Override
public float coord(int overlap, int maxOverlap) {
return overlap == 0 ? 0 : 1.0f / overlap;
}
After some debugging I found out, that the coord factor gets multiplied twice
with the score. Once in the BooleanScorer2:
@Override
public float score() throws IOException {
coordinator.nrMatchers = 0;
float sum = countingSumScorer.score();
return sum * coordinator.coordFactors[coordinator.nrMatchers];
}
and then also in ConjunctionScorer:
@Override
public float score() throws IOException {
float sum = 0.0f;
for (int i = 0; i < scorers.length; i++) {
sum += scorers[i].score();
}
return sum * coord;
}
However, if I run the query with debugQuery=on to get the explanation, the
score in the explanation gets multiplied only once with the coord factor, and
thus the final score is not the same as in the result list.
To me it looks like multiplying the score twice with the coord factor is a bug.
Can someone confirm that or am I wrong?
Pascal
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]