From 95cc74372ba2c94ce3c59776ffd8cccd7a055407 Mon Sep 17 00:00:00 2001 From: amvanbaren Date: Mon, 27 Jan 2025 21:43:20 +0200 Subject: [PATCH] Log relevance score calculation --- .../org/eclipse/openvsx/search/RelevanceService.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/eclipse/openvsx/search/RelevanceService.java b/server/src/main/java/org/eclipse/openvsx/search/RelevanceService.java index d39f06d06..8339c99d7 100644 --- a/server/src/main/java/org/eclipse/openvsx/search/RelevanceService.java +++ b/server/src/main/java/org/eclipse/openvsx/search/RelevanceService.java @@ -71,30 +71,39 @@ private double calculateRating(Extension extension, SearchStats stats) { } private double calculateRelevance(Extension extension, ExtensionVersion latest, SearchStats stats, ExtensionSearch entry) { + var extensionId = NamingUtil.toExtensionId(extension); + logger.info(">> [{}] CALCULATE RELEVANCE", extensionId); var ratingValue = 0.0; if (extension.getAverageRating() != null) { + logger.info("[{}] INCLUDE AVG RATING", extensionId); var reviewCount = extension.getReviewCount(); // Reduce the rating relevance if there are only few reviews var countRelevance = saturate(reviewCount, 0.25); ratingValue = (extension.getAverageRating() / 5.0) * countRelevance; + logger.info("[{}] {} = {} * {} | {}", extensionId, ratingValue, extension.getAverageRating() / 5.0, countRelevance, reviewCount); } var downloadsValue = entry.getDownloadCount() / stats.downloadRef; var timestamp = latest.getTimestamp(); var timestampValue = Duration.between(stats.oldest, timestamp).toSeconds() / stats.timestampRef; var relevance = ratingRelevance * limit(ratingValue) + downloadsRelevance * limit(downloadsValue) + timestampRelevance * limit(timestampValue); + logger.info("[{}] RELEVANCE: {} = {} * {} + {} * {} + {} * {}", extensionId, relevance, ratingRelevance, limit(ratingValue), downloadsRelevance, limit(downloadsValue), timestampRelevance, limit(timestampValue)); + logger.info("[{}] VALUES: {} | {} | {}", extensionId, ratingValue, downloadsValue, timestampValue); // Reduce the relevance value of unverified extensions if (!isVerified(latest)) { relevance *= unverifiedRelevance; + logger.info("[{}] UNVERIFIED: {} * {}", extensionId, relevance, unverifiedRelevance); } // Reduce the relevance value of deprecated extensions if (extension.isDeprecated()) { relevance *= deprecatedRelevance; + logger.info("[{}] DEPRECATED: {} * {}", extensionId, relevance, deprecatedRelevance); } - if (Double.isNaN(entry.getRelevance()) || Double.isInfinite(entry.getRelevance())) { + if (Double.isNaN(relevance) || Double.isInfinite(relevance)) { + logger.info("[{}] INVALID RELEVANCE", extensionId); var message = "Invalid relevance for entry " + NamingUtil.toExtensionId(entry); try { message += " " + new ObjectMapper().writeValueAsString(stats); @@ -105,6 +114,7 @@ private double calculateRelevance(Extension extension, ExtensionVersion latest, relevance = 0.0; } + logger.info("<< [{}] CALCULATE RELEVANCE: {}", extensionId, relevance); return relevance; }