#488166 by jhutton, brianV, EmanueleQuinto: search relavence calculation was broken...
authorGábor Hojtsy
Fri, 6 Aug 2010 11:41:13 +0000 (11:41 +0000)
committerGábor Hojtsy
Fri, 6 Aug 2010 11:41:13 +0000 (11:41 +0000)
modules/node/node.module

index 6942ceb..7f0e036 100644 (file)
@@ -1232,7 +1232,10 @@ function node_search($op = 'search', $keys = NULL) {
       }
       if ($weight = (int)variable_get('node_rank_recent', 5)) {
         // Exponential decay with half-life of 6 months, starting at last indexed node
-        $ranking[] = '%d * POW(2, (GREATEST(MAX(n.created), MAX(n.changed), MAX(c.last_comment_timestamp)) - %d) * 6.43e-8)';
+        // c.last_comment_timestamp may be NULL. Since both MAX(anynumber, NULL) and
+        // GREATEST(anynumber, NULL) return NULL, we OR MAX(c.last_comment_timestamp) with 1
+        // to prevent it from being NULL.
+        $ranking[] = '%d * POW(2, (GREATEST(MAX(n.created), MAX(n.changed), MAX(c.last_comment_timestamp) || 1) - %d) * 6.43e-8)';
         $arguments2[] = $weight;
         $arguments2[] = (int)variable_get('node_cron_last', 0);
         $join2 .= ' LEFT JOIN {node_comment_statistics} c ON c.nid = i.sid';