diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2024-02-05 20:12:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-05 20:12:42 +0100 |
commit | 6eef2f69956fedf3556bf320a54502a94e56a20a (patch) | |
tree | 46052d6907feb505666207517d339aeb100665d9 | |
parent | a30640c1aed5cbe03b0e992936d39ca0263e93d4 (diff) | |
parent | 8933ae42a928d64fea5e5fa2e64258acda0e485a (diff) |
Merge pull request #30182 from vespa-engine/arnej/empty-sorting-should-deactivate
giving an empty sorting spec should turn off sorting
-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) { |