|
|
|
|
|
для: levsha
(28.12.2010 в 07:56)
| | Перед проведением поиска по текстовым файлам надо еще написать скрипт, который проиндексирует файлы и уберет из них "мусор".
Скрипт должен пройтись по каждому файлу, где вы планируете искать какие-либо слова, и убрать из этого файла все лишнее - слова меньше 3-х букв, повторы слов в тексте, служебные символы типа .,/ и т.д. - символы, которые никогда никто не ищет.
Вариант такого файла(файлов) приводился когда-то в этой теме - http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=57943
Проиндексированные файлы можно хранить в отдельной папке - по ним и будет проводиться поиск. | |
|
|
|
|
|
|
|
для: levsha
(28.12.2010 в 07:56)
| | у меня такое предложение...
форма:
<form action="searchscript.php" method="post">
<table>
<tr><td>Искомая строка:</td><td><input type="text" name="text" size="40" value=""></td></tr>
<tr><td>Имя корневой директории:</td><td><input type="text" name="dirname" size="40" value=""></td></tr>
</table><br><br>
<input type="submit" name="submit" value="Искать">
</form>
|
обработчик, файл searchscript.php:
<?php
// Рекурсивная функция - спускаемся вниз по каталогу
function scan_dir($dirname)
{
// Объявляем искомую переменную глобальной
GLOBAL $text;
// Открываем текущую директорию
$dir = opendir($dirname);
// Читаем в цикле директорию
while (($file = readdir($dir)) !== false)
{
// Если файл обрабатываем его содержимое
if($file != "." && $file != "..")
{
// Если имеем дело с файлом - осуществляем поиск
if(is_file($dirname."/".$file))
{
// Читаем содержимое файла
$content = file_get_contents($dirname."/".$file);
//Проверяем если ли в содержимом файла искомая строка
$str_count = substr_count($content, $text); // возвращает количество вхождений искомой строки в содержимом файла
if($str_count != 0)
{
echo $dirname."/".$file."<br>"; //выводим адрес файла в котором присутствует искомая строка
}
}
// Если перед нами директория, вызываем рекурсивно
// функцию scan_dir
if(is_dir($dirname."/".$file))
{
echo $dirname."/".$file."<br>";
scan_dir($dirname."/".$file);
}
}
}
// Закрываем директорию
closedir($dir);
}
$text = $_POST['text']; // Искомая строка
$dirname = $_POST['dirname'];
if ($text != "" && $dirname != "")
{
scan_dir($dirname); // Вызов рекурсивной функции
}
else echo 'имеются незаполненные поля!';
?>
|
| |
|
|
|
|
|
|
| Добрый день, уважаемые форумчане! Столкнулся с такой задачей как поиск по файлам. Допустим, на сервер выкладываются текстовые файлы. В базу данных они заноситься не должны.
Но нужно, чтобы осуществлялся поиск по ним. То есть, есть форма на сайте, пользователь что-то вбил, это что-то ищется по всем файлам. У кого-нибудь есть предложения?
Zend_Search_Lucene не подойдет. | |
|
|
|
|