summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-09-11 10:54:24 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-09-11 10:54:24 +0200
commita1e962ef727f90da8b31d3f4831b028e55f83399 (patch)
tree15de2baa52aaeac10fd1f66d5dfd1923505a9119 /container-search
parent39d5b377f23d2df9cae23ac5a63dfbbb2bd187ab (diff)
Consider auxiliary hits too.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/HitGroup.java32
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);
}
/**