From c281929885ad3f087a53ad85e20af1f2e7f27e7e Mon Sep 17 00:00:00 2001 From: Katharina Kaiser Date: Wed, 13 May 2026 17:30:51 +0200 Subject: [PATCH] Fix fetching the correct sort field for relations Having a relation defined in discovery.xml including a sort configuration, the Solr query might fail and no results are provided. This happens, if the metadata field used for sorting is a multi-valued field. Instead of adding the plain metadata field, the field type must be considered to get the correct Solr field. fixes #547 Signed-off-by: Katharina Kaiser --- .../configuration/DiscoveryConfigurationUtilsService.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationUtilsService.java b/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationUtilsService.java index d4b00d58b643..c5ee5c7327ee 100644 --- a/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationUtilsService.java +++ b/dspace-api/src/main/java/org/dspace/discovery/configuration/DiscoveryConfigurationUtilsService.java @@ -20,6 +20,7 @@ import org.dspace.core.Context; import org.dspace.discovery.DiscoverQuery; import org.dspace.discovery.DiscoverResultIterator; +import org.dspace.discovery.SearchService; import org.dspace.discovery.indexobject.IndexableItem; import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +35,8 @@ public class DiscoveryConfigurationUtilsService { private ItemService itemService; @Autowired private DiscoveryConfigurationService searchConfigurationService; + @Autowired + private SearchService solrService; public Iterator findByRelation(Context context, Item item, String relationName) { String entityType = itemService.getMetadataFirstValue(item, "dspace", "entity", "type", Item.ANY); @@ -61,7 +64,7 @@ public Iterator findByRelation(Context context, Item item, String relation } else { DiscoverySortFieldConfiguration sortField = discoveryConfiguration.getSearchSortConfiguration().getDefaultSortField(); - discoverQuery.setSortField(sortField.getMetadataField(), + discoverQuery.setSortField(solrService.toSortFieldIndex(sortField.getMetadataField(), sortField.getType()), DiscoverQuery.SORT_ORDER.valueOf(sortField.getDefaultSortOrder().name())); } @@ -78,4 +81,4 @@ private DiscoveryConfiguration findDiscoveryConfiguration(String entityType, Str return searchConfigurationService.getDiscoveryConfigurationByName(configurationName); } -} \ No newline at end of file +}