diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-07-04 15:36:32 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-07-04 15:36:32 +0200 |
commit | f49ff6ae01de4f04bb547eb85cc49c1c8828b145 (patch) | |
tree | 85253442c9f957c01246568ada7b33718f84a0a6 /container-search | |
parent | b3abb357a1d64c19f9be1efeb60b43da244c4391 (diff) |
Handle sorting on multivalue attributes.
Diffstat (limited to 'container-search')
3 files changed, 14 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java index 701e5d57950..578fe7cf8cc 100644 --- a/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/searcher/ValidateSortingSearcher.java @@ -61,9 +61,6 @@ public class ValidateSortingSearcher extends Searcher { HashMap<String, AttributesConfig.Attribute> attributes = new HashMap<>(config.attribute().size()); for (AttributesConfig.Attribute attr : config.attribute()) { - if (AttributesConfig.Attribute.Collectiontype.SINGLE != attr.collectiontype()) { - continue; // cannot sort on multivalue attributes - } attributes.put(attr.name(), attr); } setAttributeNames(attributes); diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java b/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java index 81881685a1d..6a7e5f144b8 100644 --- a/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java +++ b/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java @@ -62,6 +62,7 @@ public class SortingDegrader extends Searcher { if (index == null) return false; if ( ! index.isFastSearch()) return false; if ( ! index.isNumerical()) return false; + if ( index.isMultivalue()) return false; return true; } diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java index 3b9c2651bf6..dc82b984bd4 100644 --- a/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/querytransform/test/SortingDegraderTestCase.java @@ -97,6 +97,13 @@ public class SortingDegraderTestCase { } @Test + void testNoDegradingWhenMultiValueNumericAttribute() { + Query query = new Query("?ranking.sorting=%2ba3"); + execute(query); + assertNull(query.getRanking().getMatchPhase().getAttribute()); + } + + @Test void testNoDegradingWhenTurnedOff() { Query query = new Query("?ranking.sorting=-a1%20-a2&sorting.degrading=false"); execute(query); @@ -157,6 +164,11 @@ public class SortingDegraderTestCase { fastSearchAttribute2.setFastSearch(true); fastSearchAttribute2.setNumerical(true); + Index fastSearchAttribute3 = new Index("a3"); + fastSearchAttribute3.setFastSearch(true); + fastSearchAttribute3.setNumerical(true); + fastSearchAttribute3.setMultivalue(true); + Index nonFastSearchAttribute = new Index("nonFastSearchAttribute"); nonFastSearchAttribute.setNumerical(true); @@ -165,6 +177,7 @@ public class SortingDegraderTestCase { test.addIndex(fastSearchAttribute1); test.addIndex(fastSearchAttribute2); + test.addIndex(fastSearchAttribute3); test.addIndex(nonFastSearchAttribute); test.addIndex(stringAttribute); return new IndexFacts(new IndexModel(test)); |