? SolrPhpClient
? apachesolr.kpf
? apachesolr_node_cache.patch
? apachesolr/translatable-type-facet.patch
Index: apachesolr.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/apachesolr.module,v
retrieving revision 1.1.2.12.2.155.2.43
diff -u -p -r1.1.2.12.2.155.2.43 apachesolr.module
--- apachesolr.module	25 Nov 2009 15:44:59 -0000	1.1.2.12.2.155.2.43
+++ apachesolr.module	26 Nov 2009 13:24:50 -0000
@@ -353,8 +353,15 @@ function apachesolr_index_nodes($rows, $
 
   foreach ($rows as $row) {
     try {
-      // Build node. Set reset = TRUE to avoid static caching of all nodes that get indexed.
-      if ($node = node_load($row->nid, NULL, TRUE)) {
+      if ($cache = cache_get("node/{$node->nid}", 'cache_apachesolr')) {
+        $node = $cache->data;
+      }
+      else {
+        // Build node. Set reset = TRUE to avoid static caching of all nodes that get indexed.
+        $node = node_load($row->nid, NULL, TRUE);
+      }
+
+      if ($node) {
         foreach ($callbacks as $callback) {
           // The callback can either return a $document or an array of $documents.
           $documents[] = $callback($node, $namespace);
@@ -514,14 +521,17 @@ function apachesolr_nodeapi(&$node, $op,
   switch ($op) {
     case 'delete':
       apachesolr_nodeapi_delete($node);
+      cache_clear_all("node/{$node->nid}", 'cache_apachesolr');
       break;
     case 'insert':
       // Make sure no node ends up with a timestamp that's in the future
       // by using time() rather than the node's changed or created timestamp.
       db_query("INSERT INTO {apachesolr_search_node} (nid, status, changed) VALUES  (%d, %d, %d)", $node->nid, $node->status, time());
+      cache_set("node/{$node->nid}", $node, 'cache_apachesolr');
       break;
     case 'update':
       apachesolr_nodeapi_update($node);
+      cache_set("node/{$node->nid}", $node, 'cache_apachesolr');
       break;
   }
 }
