diff options
author | Arne H Juul <arnej@yahooinc.com> | 2021-10-08 12:26:03 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2021-10-08 12:26:06 +0000 |
commit | f5d36485496d2cffb14962e30224dbf0f7a05f52 (patch) | |
tree | 32a45934035f1d9d36d2895f7cabd1cb46a7e8a1 /container-search/src/main | |
parent | daaf9321988ba1ba0fd81ee3853fdd51dc692f26 (diff) |
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.
Diffstat (limited to 'container-search/src/main')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java | 16 |
1 files changed, 5 insertions, 11 deletions
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<Integer, Grouping> 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)) { |