From: x2001corpet Date: Sun, 1 Apr 2007 22:50:51 +0000 (+0000) Subject: cache autocomplete requests in MySQL X-Git-Tag: xorg/0.9.14~135 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=c15afc4e9844238cab4173022b3ef40d0dc9585d;p=platal.git cache autocomplete requests in MySQL git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1651 839d8a87-29fc-0310-9880-83ba4fa771e5 --- diff --git a/modules/search.php b/modules/search.php index dfae635..2f281f5 100644 --- a/modules/search.php +++ b/modules/search.php @@ -261,8 +261,17 @@ class SearchModule extends PLModule // result2|nb2 // ... header('Content-Type: text/plain; charset="UTF-8"'); - $q = $_REQUEST['q']; + $q = preg_replace('/\*+$/','',$_REQUEST['q']); if (!$q) exit(); + + // try to look in cached results + $cache = XDB::query('SELECT result FROM search_autocomplete WHERE name = {?} AND query = {?} AND generated > NOW() - INTERVAL 1 DAY', + $type, $q); + if ($res = $cache->fetchOneCell()) { + echo $res; + die(); + } + // default search $unique = 'user_id'; $db = 'auth_user_md5'; @@ -328,15 +337,18 @@ class SearchModule extends PLModule LIMIT 11', ($contains?'%':'').str_replace('*','%',$q).'%'); $nbResults = 0; + $res = ""; while ($result = $list->next()) { $nbResults++; if ($nbResults == 11) { - echo '...|1'."\n"; + $res .= '...|1'."\n"; } else { - echo $result['field'].'|'.$result['nb'].(isset($result['id'])?('|'.$result['id']):'')."\n"; + $res .= $result['field'].'|'.$result['nb'].(isset($result['id'])?('|'.$result['id']):'')."\n"; } } - + XDB::query('REPLACE INTO search_autocomplete VALUES ({?}, {?}, {?}, NOW())', + $type, $q, $res); + echo $res; exit(); } diff --git a/upgrade/0.9.14/08_autocomplete.sql b/upgrade/0.9.14/08_autocomplete.sql new file mode 100644 index 0000000..b7a030e --- /dev/null +++ b/upgrade/0.9.14/08_autocomplete.sql @@ -0,0 +1,7 @@ +CREATE TABLE `search_autocomplete` ( + `name` varchar(20) NOT NULL, + `query` varchar(100) NOT NULL, + `result` text NOT NULL, + `generated` datetime NOT NULL, + PRIMARY KEY (`name`,`query`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8;