summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastHit.java
diff options
context:
space:
mode:
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.java32
1 files changed, 29 insertions, 3 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 c517742f0e5..1160ea0a204 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
@@ -228,6 +228,13 @@ public class FastHit extends Hit {
}
@Override
+ public void forEachFieldAsRaw(RawUtf8Consumer consumer) {
+ super.forEachField(consumer);
+ for (SummaryData summaryData : summaries)
+ summaryData.forEachFieldAsRaw(consumer);
+ }
+
+ @Override
public Map<String, Object> fields() {
Map<String, Object> fields = new HashMap<>();
for (Iterator<Map.Entry<String, Object>> i = fieldIterator(); i.hasNext(); ) {
@@ -534,9 +541,28 @@ public class FastHit extends Hit {
void forEachField(BiConsumer<String, Object> consumer) {
data.traverse((ObjectTraverser)(name, value) -> {
- Object convertedValue = type.convert(name, value);
- if ( convertedValue != null && !shadowed(name) && !removed(name)) {
- consumer.accept(name, convertedValue);
+ if (!shadowed(name) && !removed(name)) {
+ Object convertedValue = type.convert(name, value);
+ if (convertedValue != null)
+ consumer.accept(name, convertedValue);
+ }
+ });
+ }
+
+ void forEachFieldAsRaw(RawUtf8Consumer consumer) {
+ data.traverse((ObjectTraverser)(name, value) -> {
+ if (!shadowed(name) && !removed(name)) {
+ DocsumField fieldType = type.getField(name);
+ if (fieldType != null) {
+ if (fieldType.isString()) {
+ byte[] utf8Value = value.asUtf8();
+ consumer.accept(name, utf8Value, 0, utf8Value.length);
+ } else {
+ Object convertedValue = fieldType.convert(value);
+ if (convertedValue != null)
+ consumer.accept(name, convertedValue);
+ }
+ }
}
});
}