Index: apachesolr.index.inc
===================================================================
--- apachesolr.index.inc	(revision 28080)
+++ apachesolr.index.inc	(working copy)
@@ -59,19 +59,30 @@
   }
 
   if ($build_document) {
+    $node->title = apachesolr_clean_text($node->title);
+    $node_result = drupal_clone($node);
+
     // Build the node body.
     $node->build_mode = NODE_BUILD_SEARCH_INDEX;
     $node = node_build_content($node, FALSE, FALSE);
     $node->body = drupal_render($node->content);
-    $node->title = apachesolr_clean_text($node->title);
+
+    $node_result->build_mode = NODE_BUILD_SEARCH_RESULT;
+    $node_result = node_build_content($node_result, FALSE, FALSE);
+    $node_result->body = drupal_render($node_result->content);
 
     $text = $node->body;
+    $text_result = $node_result->body;
 
     // Fetch extra data normally not visible, including comments.
     $extra = node_invoke_nodeapi($node, 'update index');
     $text .= "\n\n" . implode(' ', $extra);
     $text = apachesolr_strip_ctl_chars($text);
 
+    $extra = node_invoke_nodeapi($node_result, 'update index');
+    $text_result .= "\n\n" . implode(' ', $extra);
+    $text_result = apachesolr_strip_ctl_chars($text_result);
+
     $document = new Apache_Solr_Document();
     $document->id = apachesolr_document_id($node->nid);
     $document->site = url(NULL, array('absolute' => TRUE));
@@ -89,6 +100,7 @@
       $document->language = $node->language;
     }
     $document->body = _apachesolr_strip_decode($text);
+    $document->body_result = _apachesolr_strip_decode($text_result);
     $document->type  = $node->type;
     $document->type_name = apachesolr_strip_ctl_chars(node_get_types('name', $node));
     $document->created = apachesolr_date_iso($node->created);
Index: apachesolr_search.module
===================================================================
--- apachesolr_search.module	(revision 28087)
+++ apachesolr_search.module	(working copy)
@@ -364,8 +364,8 @@
 
 function apachesolr_process_response($response, $query, $params) {
   $results = array();
-  // We default to getting snippets from the body.
-  $hl_fl = is_null($params['hl.fl']) ? 'body' : $params['hl.fl'];
+  // We default to getting snippets from the body stored in body_result.
+  $hl_fl = is_null($params['hl.fl']) ? 'body_result' : $params['hl.fl'];
   $total = $response->response->numFound;
   pager_query("SELECT %d", $params['rows'], 0, NULL, $total);
   if ($total > 0) {
@@ -383,8 +383,8 @@
         $snippet = '';
       }
 
-      if (!isset($doc->body)) {
-        $doc->body = $snippet;
+      if (!isset($doc->body_result)) {
+        $doc->body_result = $snippet;
       }
       $doc->created = strtotime($doc->created);
       $doc->changed = strtotime($doc->changed);
@@ -707,7 +707,7 @@
       $form['basic']['apachesolr_search']['retain-filters'] = array(
         '#type' => 'checkbox',
         '#title' => t('Retain current filters'),
-        '#default_value' => !empty($_GET['retain-filters']), 
+        '#default_value' => !empty($_GET['retain-filters']),
       );
     }
     $form['filters'] = array(
Index: schema.xml
===================================================================
--- schema.xml	(revision 28080)
+++ schema.xml	(working copy)
@@ -262,7 +262,8 @@
    <field name="url" type="string" indexed="true" stored="true"/>
    <field name="title" type="text" indexed="true" stored="true" termVectors="true" omitNorms="true"/>
    <field name="sort_title" type="sortString" indexed="true" stored="false"/>
-   <field name="body" type="text" indexed="true" stored="true" termVectors="true"/>
+   <field name="body" type="text" indexed="true" stored="false" termVectors="true"/>
+   <field name="body_result" type="text" indexed="false" stored="true"/>
    <field name="teaser" type="text" indexed="false" stored="true"/>
    <field name="type" type="string" indexed="true" stored="true"/>
    <field name="type_name" type="string" indexed="true" stored="true"/>
@@ -295,7 +296,7 @@
    <!-- Copy terms to a single field that contains all taxonomy term names -->
    <copyField source="ts_vid_*" dest="taxonomy_names"/>
    <!-- The teaser can be used when a better snippet is not available -->
-   <copyField source="body" dest="teaser" maxChars="300"/>
+   <copyField source="body_result" dest="teaser" maxChars="300"/>
   
    <!-- A set of fields to contain text extracted from tag contents which we
         can boost at query time. -->
Index: solrconfig.xml
===================================================================
--- solrconfig.xml	(revision 28087)
+++ solrconfig.xml	(working copy)
@@ -474,18 +474,18 @@
 
    <!-- example highlighter config, enable per-query with hl=true -->
      <str name="hl">true</str>
-     <str name="hl.fl">body</str>
+     <str name="hl.fl">body_result</str>
      <int name="hl.snippets">3</int>
      <str name="hl.mergeContiguous">true</str>
    <!-- instructs Solr to return the field itself if no query terms are
         found -->
-     <str name="f.body.hl.alternateField">body</str>
-     <str name="f.body.hl.maxAlternateFieldLength">256</str>
+     <str name="f.body_result.hl.alternateField">body_result</str>
+     <str name="f.body_result.hl.maxAlternateFieldLength">256</str>
      <!-- JS: I wasn't getting good results here... I'm turning off for now
      because I was getting periods (.) by themselves at the begining of
      snippets and don't feel like deubgging anymore.  Without the regex is
      faster too -->
-     <!--<str name="f.body.hl.fragmenter">regex</str>--> <!-- defined below -->
+     <!--<str name="f.body_result.hl.fragmenter">regex</str>--> <!-- defined below -->
 
     <!-- By default, don't spell check -->
       <str name="spellcheck">false</str>
Index: contrib/apachesolr_attachments/apachesolr_attachments.module
===================================================================
--- contrib/apachesolr_attachments/apachesolr_attachments.module	(revision 28080)
+++ contrib/apachesolr_attachments/apachesolr_attachments.module	(working copy)
@@ -126,18 +126,19 @@
           $document->url = file_create_url($file->filepath);
           $document->hash = $hash;
           $document->nid = $node->nid;
-          $document->title = $file->filename; 
+          $document->title = $file->filename;
           $document->changed = apachesolr_date_iso($node->changed);
           $document->uid = $node->uid;
           $document->name = $node->name;
           $document->body = $text;
+          $document->body_result = $text;
           $document->text = "{$file->description} {$file->filename} $text";
           $document->type = $node->type;
           $document->bsfield_isfile = TRUE;
           _as_configure_taxonomy($document, $node);
-          
+
           drupal_alter('apachesolr_attachment', $document, $node, $file);
-           
+
           $documents[] = $document;
         }
       }
