diff options
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)); |