(index) Try harmonic mean for avgMinDist

This commit is contained in:
Viktor Lofgren 2024-08-25 11:08:41 +02:00
parent 7f498e10b7
commit 53700e6667

View File

@ -301,7 +301,7 @@ public class IndexResultScoreCalculator {
+ temporalBias + temporalBias
+ flagsPenalty; + flagsPenalty;
double score_avg_dist = rankingParams.tcfAvgDist * (1.0 / calculateAvgMinDistance(positionsQuery, ctx)); double score_avg_dist = rankingParams.tcfAvgDist * calculateAvgMinDistance(positionsQuery, ctx);
double score_firstPosition = rankingParams.tcfFirstPosition * (1.0 / Math.sqrt(firstPosition)); double score_firstPosition = rankingParams.tcfFirstPosition * (1.0 / Math.sqrt(firstPosition));
double score_bM25 = rankingParams.bm25Weight * wordFlagsQuery.root.visit(new Bm25GraphVisitor(rankingParams.bm25Params, weightedCounts, length, ctx)); double score_bM25 = rankingParams.bm25Weight * wordFlagsQuery.root.visit(new Bm25GraphVisitor(rankingParams.bm25Params, weightedCounts, length, ctx));
@ -581,13 +581,15 @@ public class IndexResultScoreCalculator {
continue; continue;
int distance = SequenceOperations.minDistance(posi.iterator(), posj.iterator()); int distance = SequenceOperations.minDistance(posi.iterator(), posj.iterator());
sum += distance; if (distance > 0) {
sum += (1.0 / distance);
cnt++; cnt++;
} }
} }
}
if (cnt > 0 && sum > 0) { if (cnt > 0 && sum > 0) {
return sum / cnt; return cnt / sum;
} else { } else {
return 1000.; return 1000.;
} }