Docbot search fix
От | Petr Jelinek |
---|---|
Тема | Docbot search fix |
Дата | |
Msg-id | 473D7F4A.9030808@pjmodos.net обсуждение исходный текст |
Ответы |
Re: Docbot search fix
Re: Docbot search fix |
Список | pgsql-www |
Hello, there is one problem in current implementation of docbot search on pg website (the "Based on your search term, we recommend the following links" part). It only works for single words which is not how docbot is meant to work. Attached patch handles multi-word search queries the way docbot does. -- Regards Petr Jelinek (PJMODOS) 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);
В списке pgsql-www по дате отправления: