$title
ECHOFORM;
//////////////////////////////////////////////////////////////////////////
// create sql query
$sql = '';
while ($q) {
$s = split_q($q);
if (!count($s)) {
break;
}
if (count($s) == 1) {
$where = ($subword
? " w.text LIKE '".db_escape($s[0])."%' "
: " w.text='".db_escape($s[0])."' AND w.type='word' "
);
} else {
$where_parts = array();
foreach ($s as $e) {
$where_parts[] = ($subword
? "w.text LIKE '".db_escape($e)."%'"
: "w.text='".db_escape($e)."'");
}
$where = " (".implode(' OR ', $where_parts).") ".
($subword ? '' : " AND w.type='word' ");
}
$sql = "SELECT COUNT(*)/COUNT(DISTINCT pr.id) AS keywords_cnt, ".
" SUM(w.cnt)/COUNT(DISTINCT pr.id) AS cnt, " .
" f.path, f.language_id, pr.id AS prid, pr.name AS package_name ".
" FROM word AS w, file AS f, package AS p, provider_record AS pr ".
" WHERE p.id=pr.package_id AND ".$where.
" AND w.file_id=f.id AND f.package_id=p.id ".
" AND f.crawler_id=w.crawler_id AND f.crawler_id=p.crawler_id ".
" GROUP BY f.crawler_id, f.id ".
" ORDER BY keywords_cnt DESC, w.cnt DESC ";
break;
}
//////////////////////////////////////////////////////////////////////////
// query DB
$total = 0;
while (isset($sql) and $sql) {
db_connect();
// use LIMIT ==> two queries: 1. total count, 2. results
// or mysql query cache ==> one query (dump data)
$res = mysql_query($sql);
if ($res === false) {
echo(''.mysql_errno().': '.mysql_error()."
\n".$sql."
\n");
break;
}
$total = mysql_num_rows($res);
break;
}
$max_page = max(1, ceil($total/$num));
$max_start = ($max_page-1)*$num;
// behind last result page
if ($start > $max_start) $start = $max_start;
// start not aligned
//$start = floor($start/$num)*$num;
//////////////////////////////////////////////////////////////////////////
// show results
if ($total) {
echo('Results: '.$total."
\n".
''."\n");
$i = 0;
while ($r = mysql_fetch_array($res)) {
//var_dump($r); exit;
if ($i == $start+$num) break;
$i++;
if ($i <= $start) continue;
$r['keywords_cnt'] = intval($r['keywords_cnt']);
if ($r['keywords_cnt'] < 2) $r['keywords_cnt'] = '';
echo('- '.htmlentities($r['package_name']).': '.
''.
htmlentities($r['path']).' '.
'('.intval($r['cnt']).' hits'.
($r['keywords_cnt'] ? ' - '.$r['keywords_cnt'].' different words' : '').
')'."
\n");
}
echo("
\n");
}
//////////////////////////////////////////////////////////////////////////
// links
if ($max_page > 1) {
$l = $ME.'?q='.urlencode($q).
($case ? '&case=1' : '').
($subword ? '&subword=1' : '').
($num != $num_default ? '&num='.$num : '').
'&start=';
echo(''."\n".
($start ? '- first'."
\n" : '').
($start ? '- previous'."
\n" : ''));
$lnkcnt = 10;
for ($i = max(0,$start-($lnkcnt*$num)); $i <= min($max_start, $start+($lnkcnt*$num)); $i+=$num) {
echo('- '.(($i/$num)+1).''."
\n");
}
echo(($start < $max_start ? '- next'."
\n" : '').
($start < $max_start ? '- last'."
\n" : '').
"
\n");
}
echo("\n");
?>