diff --git i/www/sites/all/modules/contrib/search_api/includes/processor_highlight.inc w/www/sites/all/modules/contrib/search_api/includes/processor_highlight.inc
index 57e0316..dd094b1 100644
--- i/www/sites/all/modules/contrib/search_api/includes/processor_highlight.inc
+++ w/www/sites/all/modules/contrib/search_api/includes/processor_highlight.inc
@@ -129,7 +129,11 @@ class SearchApiHighlight extends SearchApiAbstractProcessor {
             $text[] = $data;
           }
         }
-        $result['excerpt'] = $this->createExcerpt(implode("\n\n", $text), $keys);
+
+        $result['excerpt'] = $this->createExcerpt(
+          $this->flattenArrayValues($text),
+          $keys
+        );
       }
       if ($this->options['highlight'] != 'never') {
         $fields = $this->getFulltextFields($response['results'], $id, $this->options['highlight'] == 'always');
@@ -395,9 +399,40 @@ class SearchApiHighlight extends SearchApiAbstractProcessor {
    */
   protected function highlightField($text, array $keys) {
     $replace = $this->options['prefix'] . '\0' . $this->options['suffix'];
+
+    if (is_array($text)) {
+      $text = $this->flattenArrayValues($text);
+    }
+
     $keys = implode('|', array_map('preg_quote', $keys, array_fill(0, count($keys), '/')));
     $text = preg_replace('/' . self::$boundary . '(' . $keys . ')' . self::$boundary . '/iu', $replace, ' ' . $text . ' ');
     return substr($text, 1, -1);
   }
 
+  /**
+   * Glue a multidimensional array into a string.
+   *
+   * @param array $array
+   *   The multiddimensional array.
+   *
+   * @param string $glue
+   *   The separator to apply.
+   *
+   * @return string
+   *   The glued string.
+   */
+  protected function flattenArrayValues(array $array, $glue = "\n\n") {
+    $ret = '';
+    foreach ($array as $item) {
+      if (is_array($item)) {
+          $ret .= $this->flattenArrayValues($item, $glue) . $glue;
+      }
+      else {
+          $ret .= $item . $glue;
+      }
+    }
+
+    return (strlen($ret) > strlen($glue)) ?
+      substr($ret, 0, - strlen($glue)) : $ret;
+  }
 }
