#!/usr/bin/php433 \n"; if ($word2=="&") return "and"; if ($word2=="|") return "or"; if ($word2=="^") return "not"; if (strlen($word2)==1) return "true"; $w=str_replace("*", "%", $word[0]); if ($w[0]!="!" && strchr($w, "%")===false) { for ($i=0; $i"; else $WordStats.="   ".$word[0].": $cnt
"; if ($cnt>=$WordNoiseCount) return "true"; $sql="select fw.fileid, count(*) from files2words fw, words2 w ". "where w.word like \"$w\" and w.wordid=fw.wordid and fw.context&$Context ". "group by 1 ". "limit 0, $WordNoiseCount"; //echo $sql."\n"; $result=mysql_query($sql) or die("Invalid query 1"); $fid=Array(); $n=0; while ($row = mysql_fetch_array($result, MYSQL_NUM)) { $fid[]=$row[0]; $n++; if ($n>10000) break; } mysql_free_result($result); if (count($fid)==0) $s="false"; else $s=sprintf("(fileid in (%s))\n", implode (",", $fid)); /* $sql="select fw.fileid from files2words fw, words2 w ". "where w.word like \"$w\" and w.wordid=fw.wordid and fw.context&$Context ". "group by 1"; $s="(fileid in ($sql))";*/ return $s; } function ExprSQL($Expression) { // echo "$Expression
"; $where="where (". preg_replace_callback ("'[\w!%*&|\^]{1,}'", "OnWord", $Expression). ") "; //$select="SELECT f.fileid, f.fileurl, f.filetitle FROM files f, files2words fw "; $select="select fileid, fileurl, filetitle from files "; $s=$select.$where; //echo "

$s

"; return $s; } function Cnt() { global $First, $ShowBy, $LastID, $Filter, $Context, $BaseDir; $s=$Filter; $s=preg_replace(Array("'[^()%*\w!]{1,}'", "'(\band\b|\bи\b)'i", "'(\bor\b|\bили\b)'i", "'(\bnot\b|\bне\b)'i"), Array(" ", "&", "|", "^"), $s ); // echo "
$s
"; while (1) { $s2=preg_replace("'([()%*\w!]{1,})[\s]{1,}([()%*\w!]{1,})'", "\\1 & \\2 ", $s); if ($s2==$s) break; $s=$s2; } $s=preg_replace("'[\s]{1,}'", " ", $s); $Expression=$s; ReadEnds(); //Запомним запрос: $sql=sprintf("insert into searches set time=NOW(), context=%d, REMOTE_ADDR=\"%s\", REMOTE_HOST=\"%s\", rq=\"%s\"", $Context, $_SERVER["REMOTE_ADDR"], substr(gethostbyaddr($_SERVER["REMOTE_ADDR"]), 0, 120), $Filter); $result=mysql_query($sql) or die("Invalid query X $sql\n"); if (!$LastID) $LastTitle=""; else { $sql=sprintf("select * from files where fileid=%d", $LastID); $result=mysql_query($sql) or die("Invalid query 2"); $row = mysql_fetch_array($result, MYSQL_NUM); $LastTitle=$row[2]; @mysql_free_result($result); } $sql=ExprSQL($Expression); $sql=sprintf("%s and filetitle>\"%s\" order by 3", $sql, $LastTitle); //echo $sql; $sql=str_replace("\\", "", $sql); // echo "$sql\n"; $result=mysql_query($sql) or die("Invalid query 3\n");// $sql\n"); $i=$First; $n=$ShowBy; $Res=""; while ($n>0 && $row = mysql_fetch_array($result, MYSQL_NUM)) { $i++; $Res.=sprintf("%d. %s
\n", $i, $BaseDir, str_replace("\\", "/", strtolower($row[1])), $row[2]); $n--; } $LastID=$row[0];/* if ($row) { printf("

Cледующие $ShowBy > > urlencode($Filter), $i, $ShowBy, $LastID); }*/ mysql_free_result($result); if ($Res=="") $Res="

По Вашему запросу ничего не найдено. Попробуйте расширить поиск, включив в него ссылки и/или текст

"; //==========>>> $Res=preg_replace('|/empty/x0|si', '/x0', $Res); return $Res; } $s=InitDB(); if ($s!="OK") die($s); header("Cache-Control: no-store, no-cache, must-revalidate"); //phpinfo(); $s=$_SERVER["DOCUMENT_ROOT"]."/include/head.inc"; $size=@filesize($s); $f=fopen($s, 'r'); $inc=fread($f, $size); fclose($f); $s="search.inc"; $size=@filesize($s); $f=fopen($s, 'r'); $sinc=fread($f, $size); fclose($f); $title="Поиск"; $ShowBy=500; $Context=tagTitle; $First=0; $LastID=""; $Res=""; $Filter=""; if (array_key_exists("Search", $_POST)) if ($_POST["Search"]) { //Search btn pressed $Filter=$_POST["Filter"]; $ShowBy=$_POST["ShowBy"]; $LastID=@$_POST["LastID"]; $Context=0; $cntxt=Array(); if (array_key_exists("cbTitle", $_POST)) if (strtolower($_POST["cbTitle"])=="on") {$Context|=tagTitle; $cntxt[]="заголовках";} if (array_key_exists("cbRefs", $_POST)) if (strtolower($_POST["cbRefs"] )=="on") {$Context|=tagA; $cntxt[]="ссылках";} if (array_key_exists("cbText", $_POST)) if (strtolower($_POST["cbText"] )=="on") {$Context|=tagOthers;$cntxt[]="тексте";} $WordStats="Статистика встречаемости слов в ".implode(", ", $cntxt).":
\n"; $title="Результаты поиска «$Filter»"; $Res=Cnt()."
"; $Res=$WordStats."
\n".$Res; } $sinc=str_replace("%%first%%", $First, $sinc); $sinc=str_replace("%%filter%%", $Filter, $sinc); $sinc=str_replace("%%showby%%", $ShowBy, $sinc); if ($Context & tagTitle ) $sinc=str_replace("%%title%%","checked", $sinc); else $sinc=str_replace("%%title%%", "", $sinc); if ($Context & tagA ) $sinc=str_replace("%%refs%%", "checked", $sinc); else $sinc=str_replace("%%refs%%", "", $sinc); if ($Context & tagOthers) $sinc=str_replace("%%text%%", "checked", $sinc); else $sinc=str_replace("%%text%%", "", $sinc); $s=$sinc; //remembering $sinc $sinc=$sinc.$Res; if ($Res!="") $sinc=$sinc.$s; $inc=str_replace("%%url", $_SERVER["REQUEST_URI"], $inc); $inc=str_replace("%%title", $title, $inc); $inc=str_replace("%%header", $title, $inc); $inc=str_replace("%%data", $sinc, $inc); print($inc); ?>