--- search.module.orig	2006-07-08 22:08:57.000000000 +0200
+++ search.module	2006-07-08 22:10:47.000000000 +0200
@@ -300,6 +300,9 @@
   foreach (module_list() as $module) {
     module_invoke($module, 'update_index');
   }
+
+  db_query("DELETE FROM {temp_search_sids}");
+  db_query("DELETE FROM {temp_search_results}");
 }
 
 /**
@@ -845,7 +848,9 @@
   // 'matches' is used to reject those items that cannot possibly match the query.
   $conditions = $where1 .' AND ('. $query[2] .") AND i.type = '%s'";
   $arguments = array_merge($arguments1, $query[3], array($type, $query[4]));
-  $result = db_query_temporary("SELECT i.type, i.sid, SUM(i.score * t.count) AS relevance, COUNT(*) AS matches FROM {search_index} i INNER JOIN {search_total} t ON i.word = t.word $join1 WHERE $conditions GROUP BY i.type, i.sid HAVING COUNT(*) >= %d", $arguments, 'temp_search_sids');
+  $session_id = session_id();
+  db_query("DELETE FROM {temp_search_sids} WHERE ssid='$session_id'");
+  db_query("INSERT INTO {temp_search_sids} SELECT i.type, i.sid, SUM(i.score * t.count) AS relevance, COUNT(*) AS matches, '$session_id' AS ssid FROM {search_index} i INNER JOIN {search_total} t ON i.word = t.word $join1 WHERE $conditions GROUP BY i.type, i.sid HAVING COUNT(*) >= %d", $arguments);
 
   // Calculate maximum relevance, to normalize it
   $normalize = db_result(db_query('SELECT MAX(relevance) FROM temp_search_sids'));
@@ -857,7 +862,8 @@
   // Second pass: only keep items that match the complicated keywords conditions (phrase search, negative keywords, ...)
   $conditions = '('. $query[0] .')';
   $arguments = array_merge($arguments2, $query[1]);
-  $result = db_query_temporary("SELECT i.type, i.sid, $select2 FROM temp_search_sids i INNER JOIN {search_dataset} d ON i.sid = d.sid AND i.type = d.type $join2 WHERE $conditions $sort_parameters", $arguments, 'temp_search_results');
+  db_query("DELETE FROM temp_search_results WHERE ssid='$session_id'");
+  db_query("INSERT INTO {temp_search_results} SELECT i.type, i.sid, $select2, '$session_id' AS ssid FROM temp_search_sids i INNER JOIN {search_dataset} d ON i.sid = d.sid AND i.type = d.type $join2 WHERE $conditions $sort_parameters", $arguments);
   if (($count = db_result(db_query('SELECT COUNT(*) FROM temp_search_results'))) == 0) {
     return array();
   }
