From eadcdb5bed82481c52761db33a7fb55fa2e918a6 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Mon, 5 Feb 2024 21:05:44 +0100 Subject: [PATCH] (minor) Improve error handling, naming logging in IndexResultDecorator --- .../index/results/IndexResultDecorator.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) 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 0c8f6acc..6b4d062b 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 @@ -53,30 +53,37 @@ public class IndexResultDecorator { List decoratedItems = new ArrayList<>(); for (var result : rawResults) { - var linkData = urlDetailsById.get(result.getDocumentId()); - decoratedItems.add(createCombinedItem(result, linkData, rankingContext)); + var docData = urlDetailsById.get(result.getDocumentId()); + + if (null == docData) { + logger.warn("No data for document id {}", result.getDocumentId()); + continue; + } + + decoratedItems.add(createCombinedItem(result, docData, rankingContext)); } - assert decoratedItems.size() == rawResults.size() : "Result list shrunk during decoration?"; + if (decoratedItems.size() != rawResults.size()) + logger.warn("Result list shrunk during decoration?"); return decoratedItems; } private DecoratedSearchResultItem createCombinedItem(SearchResultItem result, - DocdbUrlDetail linkData, + DocdbUrlDetail docData, ResultRankingContext rankingContext) { return new DecoratedSearchResultItem( result, - linkData.url(), - linkData.title(), - linkData.description(), - linkData.urlQuality(), - linkData.format(), - linkData.features(), - linkData.pubYear(), - linkData.dataHash(), - linkData.wordsTotal(), - valuator.calculateSearchResultValue(result.keywordScores, linkData.wordsTotal(), rankingContext) + docData.url(), + docData.title(), + docData.description(), + docData.urlQuality(), + docData.format(), + docData.features(), + docData.pubYear(), + docData.dataHash(), + docData.wordsTotal(), + valuator.calculateSearchResultValue(result.keywordScores, docData.wordsTotal(), rankingContext) ); }