cvs: phpweb /include manual-lookup.inc

From: Date: Tue, 13 May 2003 21:10:31 +0000
Subject: cvs: phpweb /include manual-lookup.inc
Groups: php.mirrors 
Request: Send a blank email to php-mirrors+get-17558@lists.php.net to get a copy of this message
wez Tue May 13 17:10:31 2003 EDT Modified files: /phpweb/include manual-lookup.inc Log: Some performance tweaks from Ilia, slightly modified. Index: phpweb/include/manual-lookup.inc diff -u phpweb/include/manual-lookup.inc:1.16 phpweb/include/manual-lookup.inc:1.17 --- phpweb/include/manual-lookup.inc:1.16 Tue May 13 15:10:33 2003 +++ phpweb/include/manual-lookup.inc Tue May 13 17:10:30 2003 @@ -1,6 +1,6 @@ <?php // -*- C++ -*- -// $Id: manual-lookup.inc,v 1.16 2003/05/13 19:10:33 wez Exp $ +// $Id: manual-lookup.inc,v 1.17 2003/05/13 21:10:30 wez Exp $ // Try to find some variations of keyword with $prefix in the $lang manual function tryprefix($lang, $keyword, $prefix) @@ -73,47 +73,41 @@ function find_manual_page($lang, $keyword) { - if (!function_exists("sqlite_open")) { + if (!function_exists("sqlite_popen") || !($s = sqlite_popen('manual-lookup.sqlite'))) { return find_manual_page_slow($lang, $keyword); } - // In production, use sqlite_popen - $s = sqlite_popen("manual-lookup.sqlite"); - - /* generate keywords */ - $keyword = str_replace('_', '-', $keyword); - $keyword = preg_replace("!\\(.*\\)!", "-", $keyword); + if (strpos($keyword, '(') !== false) { + $keyword = preg_replace("!\\(.*\\)!", "-", $keyword); + } if (strlen($keyword) == 0) { return ""; } - $keywords = array($keyword); + // NB: sqlite wants ' quoted as '' + $keyword = sqlite_escape_string($keyword); - $keywords[] = str_replace(' ', '', $keyword); - $keywords[] = str_replace(' ', '-', $keyword); - $keywords[] = str_replace('-', '', $keyword); - - $keywords = array_unique($keywords); - $words = ""; - foreach ($keywords as $word) { - if (strlen($words)) { - $words .= ','; - } - $words .= "'" . sqlite_escape_string($word) . "'"; - } + $keywords = array_unique(array( + $keyword, + str_replace(' ', '', $keyword), + str_replace(' ', '-', $keyword), + str_replace('-', '', $keyword), + metaphone($keyword) + )); + + $words = "'" . implode("','", $keywords) . "'"; + + $langs = ($lang != 'en') ? + array(sqlite_escape_string($lang), 'en') : + array('en'); - if ($lang != 'en') { - $langs = array(sqlite_escape_string($lang), 'en'); - } else { - $langs = array('en'); - } foreach ($langs as $lang) { - $q = sqlite_query($s, "SELECT name from fs where lang='$lang' and keyword in ($words) order by prefix LIMIT 1"); + $q = sqlite_query($s, "SELECT name from fs where lang='" . $lang . "' and keyword in (" . $words . ") order by prefix LIMIT 1"); if ($q) { $r = sqlite_fetch_array($q, SQLITE_NUM); - if (is_array($r)) { + if (isset($r[0])) { return $r[0]; } }

« previous php.mirrors (#17558) next »