diff --git a/contrib/search_api_views/search_api_views.views.inc b/contrib/search_api_views/search_api_views.views.inc
index a591c34..f25a336 100644
--- a/contrib/search_api_views/search_api_views.views.inc
+++ b/contrib/search_api_views/search_api_views.views.inc
@@ -101,11 +101,24 @@ function search_api_views_views_data() {
             unset($fields[$field]);
           }
           if (!isset($types[$inner_type]) && $depth < $max_depth) {
-            // Visit this entity/struct in a later iteration.
-            $field .= ':';
-            $wrappers[$field] = $value;
-            $prefix_names[$field] = $prefix_name ? $prefix_name . ' » ' . $info['label'] : $info['label'];
-            $nesting_levels[$field] = search_api_list_nesting_level($type);
+
+            // We need to decide if we REALLY need to recurse into this item.
+            $fields_keys = array_keys($fields);
+            $recurse_needed = FALSE;
+            foreach ($fields_keys as $key_prefix) {
+              if (strpos($key_prefix, $field) === 0) {
+                $recurse_needed = TRUE;
+                break;
+              }
+            }
+
+            if ($recurse_needed) {
+              // Visit this entity/struct in a later iteration.
+              $field .= ':';
+              $wrappers[$field] = $value;
+              $prefix_names[$field] = $prefix_name ? $prefix_name . ' » ' . $info['label'] : $info['label'];
+              $nesting_levels[$field] = search_api_list_nesting_level($type);
+            }
           }
         }
         unset($wrappers[$prefix]);
