From 8f522470eda99dfea9fc6ae57297a09dc536e61d Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Mon, 1 Jan 2024 17:16:29 +0100 Subject: [PATCH] (index) Adjust rank weightings to fix bad wikipedia results There was as bug where if the input of ResultValuator.normalize() was negative, it was truncated to zero. This meant that "bad" results always rank the same. The penalty factor "overallPart" was moved outside of the function and was re-weighted to accomplish a better normalization. Some of the weights were also re-adjusted based on what appears to produce better results. Needs evaluation. --- .../src/main/java/nu/marginalia/ranking/ResultValuator.java | 3 ++- .../nu/marginalia/index/results/IndexResultDecorator.java | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/ResultValuator.java b/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/ResultValuator.java index 30b647e9..390a02b8 100644 --- a/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/ResultValuator.java +++ b/code/features-index/result-ranking/src/main/java/nu/marginalia/ranking/ResultValuator.java @@ -108,7 +108,8 @@ public class ResultValuator { } } - return normalize(bestTcf + bestBM25F + bestBM25P + bestBM25PN * 0.25 + overallPart); + + return normalize(2* bestTcf + bestBM25F + bestBM25P + bestBM25PN * 0.5) - overallPart / 4; } private double calculateQualityPenalty(int size, int quality, ResultRankingParameters rankingParams) { diff --git a/code/services-core/index-service/src/main/java/nu/marginalia/index/results/IndexResultDecorator.java b/code/services-core/index-service/src/main/java/nu/marginalia/index/results/IndexResultDecorator.java index cf352331..376972b8 100644 --- a/code/services-core/index-service/src/main/java/nu/marginalia/index/results/IndexResultDecorator.java +++ b/code/services-core/index-service/src/main/java/nu/marginalia/index/results/IndexResultDecorator.java @@ -10,6 +10,8 @@ import nu.marginalia.index.client.model.results.SearchResultItem; import nu.marginalia.linkdb.LinkdbReader; import nu.marginalia.linkdb.model.LdbUrlDetail; import nu.marginalia.ranking.ResultValuator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.sql.SQLException; import java.util.ArrayList; @@ -21,6 +23,8 @@ import java.util.Map; @Singleton public class IndexResultDecorator { + private static final Logger logger = LoggerFactory.getLogger(IndexResultDecorator.class); + private final LinkdbReader linkdbReader; private final ResultValuator valuator;