diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index dab35cccb97..9f51497403f 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -434,6 +434,8 @@ New Features * SOLR-3036: Ability to specify overwrite=false on the URL for XML updates. (Sami Siren via yonik) +* SOLR-2603: Add the encoding function for alternate fields in highlighting. + (Massimo Schiavon, koji) Optimizations ---------------------- diff --git a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java index 1bb727eedbb..403c4aa0084 100644 --- a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java +++ b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java @@ -577,21 +577,23 @@ public class DefaultSolrHighlighter extends SolrHighlighter implements PluginInf String[] altTexts = listFields.toArray(new String[listFields.size()]); if (altTexts != null && altTexts.length > 0){ + Encoder encoder = getEncoder(fieldName, params); int alternateFieldLen = params.getFieldInt(fieldName, HighlightParams.ALTERNATE_FIELD_LENGTH,0); - if( alternateFieldLen <= 0 ){ - docSummaries.add(fieldName, altTexts); - } - else{ - List altList = new ArrayList(); - int len = 0; - for( String altText: altTexts ){ + List altList = new ArrayList(); + int len = 0; + for( String altText: altTexts ){ + if( alternateFieldLen <= 0 ){ + altList.add(encoder.encodeText(altText)); + } + else{ altList.add( len + altText.length() > alternateFieldLen ? - new String(altText.substring( 0, alternateFieldLen - len )) : altText ); + encoder.encodeText(new String(altText.substring( 0, alternateFieldLen - len ))) : + encoder.encodeText(altText) ); len += altText.length(); if( len >= alternateFieldLen ) break; } - docSummaries.add(fieldName, altList); } + docSummaries.add(fieldName, altList); } } }