Index: system/page/search.php =================================================================== --- system/page/search.php (revision 1813) +++ system/page/search.php (working copy) @@ -105,7 +105,15 @@ function search_docbot() { if ($this->pagenum > 1) return; // only show docbot urls on first page - $qry = "SELECT url FROM docbot_keylist WHERE \"key\" = '". pg_escape_string($this->query) ."'ORDER BY url ~ 'postgresql.org' desc, url LIMIT ". $this->maxdocbots; + // split query to separate words + $keys = preg_split('/\s+/', str_replace('"', '', $this->query)); + + // build the keyword search sql query + $part = "SELECT kurl FROM docbot_key WHERE \"key\" = lower('"; + $qry = "SELECT url FROM docbot_url WHERE id IN (\n"; + $qry .= join("\n\tINTERSECT\n", array_map(create_function('$e', 'global $part; return $part.pg_escape_string($e)."\')";'), $keys)); + $qry .= ")\nORDER BY url ~ 'postgresql.org' desc, url LIMIT ".$this->maxdocbots; + $rs = $this->pg_query($qry,'search'); for ($i = 0; $i < pg_num_rows($rs); $i++) { $r = pg_fetch_array($rs, $i, PGSQL_ASSOC);