debugging = true; //стеммеры include("configs/stem.php"); $stemmer = new Lingua_Stem_Ru(); //русский include("configs/stem_eng.php"); $stemm = new PorterStemmer(); //английский function go_to_index($dir, $word){ global $stemmer; global $stemm; $handle = opendir($dir); $arr = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $fr = fopen ($dir . "/" . $file, "r"); flock($fr, LOCK_EX); $r = fread ($fr, filesize ($dir . "/" . $file)); //define("RUS_KEY","йцукенгшщзхъфывапролджэячсмитьбюёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ"); //$num=str_word_count($r,2,RUS_KEY); $num = explode(' ', $r); $count = array_count_values ($num); //с помощью стеммера находим все формы слова $word = $stemmer->stem_word($word); //существует ли в массиве ключ = словоформам слова if(array_key_exists($word, $count)){ //число релевантности слова в текстовом файле $value = $count[$word]; $number = $value . "|" . $dir . "/" . $file; /*составление массива чисел, релевантность слова в каждом текст. файле данной директории*/ array_push($arr, $number); } flock($fr, LOCK_UN); fclose($fr); } } closedir($handle); return $arr; } $word = "плитка"; //слово, которое вводит пользователь $id = isset($_GET['id']) ? intval($_GET['id']) : 0; if(!$id){ $indexdir = "./index"; //директория, где лежит индекс $arr = go_to_index($indexdir, $word); //сортируем по убыванию полученный массив array_reverse($arr); $total = count($arr); if ($total!=0) echo "Всего найдено страниц: " . $total . "
"; else echo "Ничего не найдено!

Возможно, вы просто неправильно составили запрос. Пожалуйста, прочитайте условия пользования поиском."; foreach($arr as $one){ //удаляем из строки лишнее, оставить только название //получаем массив названий файлов preg_match_all("#\d+\|\./index/(.+?).txt#i",$one,$file); unset($file[0]); //print_r($file[1]); //Выбрать из базы id статьи $sql = "SELECT * FROM `texts`"; $res = mysql_query($sql, $link); $quest = array(); while ($row = mysql_fetch_assoc($res)){ $quest[] = $row; $id = $row['id']; } $sec_arg = array(); $file_name = array(); while (list($k, $v) = each ($file[1])) { $file_name[] = $v; foreach($quest as $qqq){ //названия файлов имеют формат фыва.txt, отсекаем расширение $base_name = strtok($qqq['main_text'], "."); //если название файла = названию файла в базе, //добавляем в массив его id if($base_name == $v) array_push($sec_arg, $qqq['id']); } } //print_r($sec_arg); // вывод результата if(count($file[1]) == count($sec_arg)) $c = array_combine($file[1], $sec_arg); //связываем название файла с его id foreach($c as $key => $value){ print "" . $key . "
"; } } //$smarty->assign("link", $c); //$smarty->display("go_index.tpl"); }else{ //найти id статьи в базе $sql = "SELECT * FROM `texts` WHERE `id` = $id"; $result = mysql_query($sql, $link); while ($row = mysql_fetch_assoc($result)){ //print_r($row); $name = $row['main_text']; $name = strtok($name, "."); $mod = $row['id_mod']; switch($mod){ case 0: $folder = "menu"; break; case 11: $folder = "advices"; break; case 13: $folder = "quest"; break; case 4: $folder = "contact"; break; } //открыть нужный текст в нужной папке $filename = "content/" . $folder . "/" . $name . ".txt"; $fp = fopen($filename, "r"); flock($fp, LOCK_EX); $text = fread($fp, filesize($filename)); $head = strtok($text, "\n"); $text = substr($text, strpos($text, ".")+1); $text = nl2br($text); preg_match_all("#([A-Яa_я]?)*#i", $word, $out_ru, PREG_PATTERN_ORDER); preg_match_all("#([A-Za_z]?)*#i", $word, $out_eng, PREG_PATTERN_ORDER); if($out_ru[0]){ $text = preg_replace('/' . preg_quote($stemmer->stem_word($word), '/') . '\\S*/i', '\\0', $text); }else{ $text = preg_replace('/' . preg_quote($stemm->Stem($word), '/') . '\\S*/i', '\\0', $text); } flock($fp, LOCK_UN); fclose($fp); } $smarty->assign("a", $head); $smarty->assign("b", $text); $smarty->display("go_index1.tpl"); } ?>