diff -U 3 -H -d -r -N -- dev_mods/views/modules/search.views.inc public_html/sites/all/modules/views/modules/search.views.inc
--- dev_mods/views/modules/search.views.inc	2010-07-29 11:27:42.000000000 +0200
+++ public_html/sites/all/modules/views/modules/search.views.inc	2010-07-29 11:19:48.000000000 +0200
@@ -154,8 +154,6 @@
  * Implementation of hook_views_plugins
  */
 function search_views_plugins() {
-  return;
-  // DISABLED. This currently doesn't work.
   return array(
     'module' => 'views', // This just tells our themes are elsewhere.
     'row' => array(
@@ -176,18 +174,22 @@
  * Template helper for theme_views_view_row_search
  */
 function template_preprocess_views_view_row_search(&$vars) {
-  $vars['node'] = ''; // make sure var is defined.
+  // make sure we have a node.
+  $vars['node'] = '';
   $nid = $vars['row']->nid;
   if (!is_numeric($nid)) {
     return;
   }
 
+  // Fetch the node
   $node = node_load($nid);
-
   if (empty($node)) {
     return;
   }
 
+  // Set build mode
+  $node->build_mode = NODE_BUILD_SEARCH_RESULT;
+
   // Build the node body.
   $node = node_build_content($node, FALSE, FALSE);
   $node->body = drupal_render($node->content);
@@ -198,9 +200,9 @@
   // Fetch terms for snippet
   $node->body .= module_invoke('taxonomy', 'nodeapi', $node, 'update index');
 
+  // Building template result
   $vars['url'] = url('node/' . $nid);
   $vars['title'] = check_plain($node->title);
-
   $info = array();
   $info['type'] = node_get_types('name', $node);
   $info['user'] = theme('username', $node);
@@ -211,11 +213,23 @@
   }
   $vars['info_split'] = $info;
   $vars['info'] = implode(' - ', $info);
-
+  $vars['score'] = $vars['row']->score;
   $vars['node'] = $node;
-  // @todo: get score from ???
-//$vars['score'] = $item->score;
-  $vars['snippet'] = search_excerpt($vars['view']->value, $node->body);
+
+  // Get filter keys from views object
+  // Identifier is configurable so get the search 'keys' options first
+  if (!isset($vars['filter_options'])) {
+    $vars['filter_options'] = $vars['view']->display_handler->handlers['filter']['keys'];
+  }
+  // Reduce memory
+  if (isset($vars['filter_options']->view)) {
+    unset($vars['filter_options']->view);
+  }
+  // Set search identifier
+  $vars['identifier'] = $vars['filter_options']->options['expose']['identifier'];
+
+  // Use this value for highlighting search term
+  $vars['snippet'] = search_excerpt($vars['view']->exposed_data[$vars['identifier']], $node->body);
 }
 
 
diff -U 3 -H -d -r -N -- dev_mods/views/theme/views-view-row-search.tpl.php public_html/sites/all/modules/views/theme/views-view-row-search.tpl.php
--- dev_mods/views/theme/views-view-row-search.tpl.php	1970-01-01 02:00:00.000000000 +0200
+++ public_html/sites/all/modules/views/theme/views-view-row-search.tpl.php	2010-07-29 11:04:48.000000000 +0200
@@ -0,0 +1,59 @@
+<?php
+// $Id: views-view-row-search.tpl.php Exp $
+
+/**
+ * @file views-view-row-search.tpl.php
+ * Default theme implementation for displaying a single search result.
+ *
+ * This template renders a single search result and is collected into
+ * search-results.tpl.php. This and the parent template are
+ * dependent to one another sharing the markup for definition lists.
+ *
+ * Available variables:
+ * - $url: URL of the result.
+ * - $title: Title of the result.
+ * - $snippet: A small preview of the result. Does not apply to user searches.
+ * - $info: String of all the meta information ready for print. Does not apply
+ *   to user searches.
+ * - $info_split: Contains same data as $info, split into a keyed array.
+ * - $type: The type of search, e.g., "node" or "user".
+ *
+ * Default keys within $info_split:
+ * - $info_split['type']: Node type.
+ * - $info_split['user']: Author of the node linked to users profile. Depends
+ *   on permission.
+ * - $info_split['date']: Last update of the node. Short formatted.
+ * - $info_split['comment']: Number of comments output as "% comments", %
+ *   being the count. Depends on comment.module.
+ * - $info_split['upload']: Number of attachments output as "% attachments", %
+ *   being the count. Depends on upload.module.
+ *
+ * Since $info_split is keyed, a direct print of the item is possible.
+ * This array does not apply to user searches so it is recommended to check
+ * for their existance before printing. The default keys of 'type', 'user' and
+ * 'date' always exist for node searches. Modules may provide other data.
+ *
+ *   <?php if (isset($info_split['comment'])) : ?>
+ *     <span class="info-comment">
+ *       <?php print $info_split['comment']; ?>
+ *     </span>
+ *   <?php endif; ?>
+ *
+ * To check for all available data within $info_split, use the code below.
+ *
+ *   <?php print '<pre>'. check_plain(print_r($info_split, 1)) .'</pre>'; ?>
+ *
+ * @see template_preprocess_search_result()
+ */
+?>
+<dt class="title">
+  <a href="<?php print $url; ?>"><?php print $title; ?></a>
+</dt>
+<dd>
+  <?php if ($snippet) : ?>
+    <p class="search-snippet"><?php print $snippet; ?></p>
+  <?php endif; ?>
+  <?php if ($info) : ?>
+  <p class="search-info"><?php print $info; ?></p>
+  <?php endif; ?>
+</dd>
