List<FieldMappingSpec> fieldMapping = request.getFieldMapping();
StringBuilder title = new StringBuilder();
StringBuilder content = new StringBuilder();
StringBuilder url = new StringBuilder();
StringBuilder language = new StringBuilder();
Joiner joiner = Joiner.on(" . ");
boolean emptySourceWarningEmitted = false;
for (SearchHit hit : hits) {
// Prepare logical fields for each hit.
title.setLength(0);
content.setLength(0);
url.setLength(0);
language.setLength(0);
Map<String, SearchHitField> fields = hit.getFields();
Map<String, HighlightField> highlightFields = hit.getHighlightFields();
Map<String,Object> sourceAsMap = null;
for (FieldMappingSpec spec : fieldMapping) {
// Determine the content source.
Object appendContent = null;
switch (spec.source) {
case FIELD:
SearchHitField searchHitField = fields.get(spec.field);
if (searchHitField != null) {
appendContent = searchHitField.getValue();
}
break;
case HIGHLIGHT:
HighlightField highlightField = highlightFields.get(spec.field);
if (highlightField != null) {
appendContent = joiner.join(highlightField.fragments());
}
break;
case SOURCE:
if (sourceAsMap == null) {