diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java index f3232bd2d2a..e6cb3b3e18a 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java @@ -441,6 +441,23 @@ public class FastHit extends Hit { return hit.fieldNameIterator(); } + @Override + public int hashCode() { + return createSet().hashCode(); + } + + @Override + public boolean equals(Object o) { + if (o == this) return true; + if ( ! (o instanceof Set)) return false; + return createSet().equals(o); + } + + @Override + public String toString() { + return createSet().toString(); + } + private Set<String> createSet() { if ( ! hit.hasFields() && hit.summaries.isEmpty()) return Collections.emptySet(); // shortcut @@ -450,7 +467,8 @@ public class FastHit extends Hit { for (SummaryData summaryData : hit.summaries) summaryData.data.traverse((ObjectTraverser)(name, __) -> fields.add(name)); - fields.removeAll(hit.removedFields); + if (hit.removedFields != null) + fields.removeAll(hit.removedFields); this.fieldSet = fields; @@ -536,7 +554,8 @@ public class FastHit extends Hit { private void advanceNext() { while (fieldIterator.hasNext()) { next = fieldIterator.next(); - if (!hit.hasField(next.getKey()) && !hit.removedFields.contains(next.getKey())) + if ( ! hit.hasField(next.getKey()) && + ! (hit.removedFields != null && hit.removedFields.contains(next.getKey()))) break; } next = null; @@ -633,6 +652,8 @@ public class FastHit extends Hit { throw new IllegalStateException(); if ( ! ( currentIterator instanceof SummaryData.SummaryDataIterator)) currentIterator.remove(); // remove from the map + if (hit.removedFields == null) + hit.removedFields = new HashSet<>(); hit.removedFields.add(nameOf(previousReturned)); previousReturned = null; } |