cvs: phpweb /include manual-lookup.inc
| From: | Wez Furlong | 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];
}
}