diff options
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/query/Ranking.java | 8 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/Ranking.java b/container-search/src/main/java/com/yahoo/search/query/Ranking.java index 3c2a8a83c40..b1dd5624d18 100644 --- a/container-search/src/main/java/com/yahoo/search/query/Ranking.java +++ b/container-search/src/main/java/com/yahoo/search/query/Ranking.java @@ -233,7 +233,13 @@ public class Ranking implements Cloneable { public Sorting getSorting() { return sorting; } /** Sets how this query should be sorted. Set to null to turn off explicit sorting. */ - public void setSorting(Sorting sorting) { this.sorting = sorting; } + public void setSorting(Sorting sorting) { + if (sorting == null || sorting.fieldOrders().isEmpty()) { + this.sorting = null; + } else { + this.sorting = sorting; + } + } /** Sets sorting from a string. See {@link Sorting} on syntax */ public void setSorting(String sortingString) { diff --git a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java index 91acc883803..1003cd942a8 100644 --- a/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java +++ b/container-search/src/main/java/com/yahoo/search/ranking/GlobalPhaseRanker.java @@ -37,7 +37,10 @@ public class GlobalPhaseRanker { var setup = globalPhaseSetupFor(query, schema).orElse(null); if (setup == null) return Optional.empty(); var sorting = query.getRanking().getSorting(); - if (sorting == null || sorting.fieldOrders() == null) return Optional.empty(); + if (sorting == null) return Optional.empty(); + if (sorting.fieldOrders() == null || sorting.fieldOrders().isEmpty()) { + return Optional.of(ErrorMessage.createIllegalQuery("Invalid sorting for global phase")); + } for (var fieldOrder : sorting.fieldOrders()) { if (!fieldOrder.getSorter().getName().equals("[rank]") || fieldOrder.getSortOrder() != Sorting.Order.DESCENDING) { |