Docbot search fix - Mailing list pgsql-www

From Petr Jelinek
Subject Docbot search fix
Date
Msg-id 473D7F4A.9030808@pjmodos.net
Whole thread Raw
Responses Re: Docbot search fix  (Bruce Momjian <bruce@momjian.us>)
Re: Docbot search fix  (Bruce Momjian <bruce@momjian.us>)
List 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 by date:

Previous
From: Dave Page
Date:
Subject: Re: What's the current location of the pgweb project ?!
Next
From: "Greg Sabino Mullane"
Date:
Subject: Redirects for gborg are in place