From f5d36485496d2cffb14962e30224dbf0f7a05f52 Mon Sep 17 00:00:00 2001 From: Arne H Juul Date: Fri, 8 Oct 2021 12:26:03 +0000 Subject: Continue grouping even when there is an error * If a grouping pass result includes an error, that does not necessarily mean we should give up entirely and throw away all grouping results. * Instead, just merge errors into the main results just like all the other errors. --- .../yahoo/search/grouping/vespa/GroupingExecutor.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'container-search/src/main/java/com') diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java index d34d5594ef7..21db47908a8 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java @@ -210,7 +210,6 @@ public class GroupingExecutor extends Searcher { // Perform multi-pass query to complete all grouping requests. Item origRoot = query.getModel().getQueryTree().getRoot(); - int prePassErrors = query.errors().size(); Result ret = null; Item baseRoot = origRoot; if (lastPass > 0) { @@ -247,20 +246,15 @@ public class GroupingExecutor extends Searcher { } setGroupingList(query, passList); Result passResult = execution.search(query); - if (passResult.hits().getError() != null) { - if (firstPass) { - if (passResult.hits().getErrorHit().errors().size() > prePassErrors || - passResult.hits().getErrorHit().errors().size() == 0) { - return passResult; - } - } else { - return passResult; - } - } Map passGroupingMap = mergeGroupingResults(passResult); mergeGroupingMaps(groupingMap, passGroupingMap); if (firstPass) { ret = passResult; + } else { + ErrorMessage err = passResult.hits().getError(); + if (err != null) { + ret.hits().addError(err); + } } } if (log.isLoggable(Level.FINE)) { -- cgit v1.2.3