diff --git a/modules/node/node.module b/modules/node/node.module index a3e0f20face9..9c0b3d38184b 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -1257,12 +1257,22 @@ function node_search($op = 'search', $keys = NULL) { $join2 .= ' LEFT JOIN {node_counter} nc ON nc.nid = i.sid'; $total += $weight; } - $select2 = (count($ranking) ? implode(' + ', $ranking) : 'i.relevance') .' AS score'; - - // Do search + + // When all search factors are disabled (ie they have a weight of zero), + // the default score is based only on keyword relevance and there is no need to + // adjust the score of each item. + if ($total == 0) { + $select2 = 'i.relevance AS score'; + $total = 1; + } + else { + $select2 = implode(' + ', $ranking) . ' AS score'; + } + + // Do search. $find = do_search($keys, 'node', 'INNER JOIN {node} n ON n.nid = i.sid '. $join1 .' INNER JOIN {users} u ON n.uid = u.uid', $conditions1 . (empty($where1) ? '' : ' AND '. $where1), $arguments1, $select2, $join2, $arguments2); - // Load results + // Load results. $results = array(); foreach ($find as $item) { // Build the node body. @@ -1271,9 +1281,9 @@ function node_search($op = 'search', $keys = NULL) { $node = node_build_content($node, FALSE, FALSE); $node->body = drupal_render($node->content); - // Fetch comments for snippet + // Fetch comments for snippet. $node->body .= module_invoke('comment', 'nodeapi', $node, 'update index'); - // Fetch terms for snippet + // Fetch terms for snippet. $node->body .= module_invoke('taxonomy', 'nodeapi', $node, 'update index'); $extra = node_invoke_nodeapi($node, 'search result');