diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-11 10:54:24 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-11 10:54:24 +0200 |
commit | a1e962ef727f90da8b31d3f4831b028e55f83399 (patch) | |
tree | 15de2baa52aaeac10fd1f66d5dfd1923505a9119 /container-search | |
parent | 39d5b377f23d2df9cae23ac5a63dfbbb2bd187ab (diff) |
Consider auxiliary hits too.
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/result/HitGroup.java | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java index 056976724bb..253ef8a1e29 100644 --- a/container-search/src/main/java/com/yahoo/search/result/HitGroup.java +++ b/container-search/src/main/java/com/yahoo/search/result/HitGroup.java @@ -491,27 +491,29 @@ public class HitGroup extends Hit implements DataList<Hit>, Cloneable, Iterable< ensureSorted(); int highBound = numHits + offset; // Largest offset +1 + boolean needToTrim = (offset > 0) || (hits.size() > highBound); + if ( ! needToTrim ) return; int currentIndex = -1; - + ListenableArrayList<Hit> newHits = new ListenableArrayList<>(numHits); for (Iterator<Hit> i = hits.iterator(); i.hasNext();) { Hit hit = i.next(); - if (hit.isAuxiliary()) continue; - - currentIndex++; - if (currentIndex < offset || currentIndex >= highBound) - handleRemovedHit(hit); - } - if ((offset > 0) || (hits.size() > highBound)) { - ListenableArrayList<Hit> newHits = new ListenableArrayList<>(numHits); - for (int index = offset; index < Math.min(highBound, hits.size()); index++) - newHits.add(hits.get(index)); - for (Runnable listener : hits.listeners()) - newHits.addListener(listener); - hits = newHits; - unmodifiableHits = Collections.unmodifiableList(hits); + if (hit.isAuxiliary()) { + newHits.add(hit); + } else { + currentIndex++; + if (currentIndex < offset || currentIndex >= highBound) { + handleRemovedHit(hit); + } else { + newHits.add(hit); + } + } } + for (Runnable listener : hits.listeners()) + newHits.addListener(listener); + hits = newHits; + unmodifiableHits = Collections.unmodifiableList(hits); } /** |