diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java index c0747cc4..46d4a4de 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java @@ -323,12 +323,11 @@ public class DocumentService { boolean useRankOrder = hasText && (sort == null || sort == DocumentSort.RELEVANCE); if (useRankOrder) { List results = documentRepository.findAll(spec); - final List ids = rankedIds; + Map rankMap = new HashMap<>(); + for (int i = 0; i < rankedIds.size(); i++) rankMap.put(rankedIds.get(i), i); return results.stream() - .sorted(Comparator.comparingInt(doc -> { - int idx = ids.indexOf(doc.getId()); - return idx < 0 ? Integer.MAX_VALUE : idx; - })) + .sorted(Comparator.comparingInt( + doc -> rankMap.getOrDefault(doc.getId(), Integer.MAX_VALUE))) .toList(); }