diff --git a/apachesolr_search.module b/apachesolr_search.module
index 3656bc0..91fa057 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -1167,6 +1167,8 @@ function apachesolr_search_process_response($response, DrupalSolrQueryInterface
     // 'score' is generated by solr.
     foreach ($response->response->docs as $doc) {
       $extra = array();
+      // Allow modules to alter each document and its extra information.
+      drupal_alter('apachesolr_search_result', $doc, $extra, $query);
 
       // Start with an empty snippets array.
       $snippets = array();
@@ -1186,6 +1188,7 @@ function apachesolr_search_process_response($response, DrupalSolrQueryInterface
           $snippets[] = truncate_utf8($doc->teaser, 256, TRUE);
         }
       }
+      
       $hook = 'apachesolr_search_snippets__' . $doc->entity_type;
       $bundle = !empty($doc->bundle) ? $doc->bundle : NULL;
       if ($bundle) {
@@ -1220,13 +1223,9 @@ function apachesolr_search_process_response($response, DrupalSolrQueryInterface
         $doc->name = NULL;
       }
 
-      $extra = array();
-
-      // Allow modules to alter each document and its extra information.
-      drupal_alter('apachesolr_search_result', $doc, $extra, $query);
-
       // Set all expected fields from fl to NULL if they are missing so
       // as to prevent Notice: Undefined property.
+      $fl = array_merge($fl, array('path', 'label', 'score'));
       foreach ($fl as $field) {
         if (!isset($doc->{$field})) {
           $doc->{$field} = NULL;
