![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2008
Сообщений: 3
|
Здравствуйте.
Помогите разобраться в составлении поиска по сайту. В составе сайта около 1000 статических страниц HTML. Множество страниц находится в папках. Я хочу сделать поиск по всем страницам с помощью РНР и MySQL. Для это мне необходимо что-то сделать с помощью РНР, что бы занести всю информацию в БД. Подскажите, каким образом нужно обработать информацию со всех страниц, чтобы убрать тэги и поместить в таблицу в БД. (вроде как с помощью буферизации или я ошибаюсь?) Как выглядит этот код и где он должен находиться? Спасибо. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 29
|
Вот тебе функция которая убирает ХТМЛ и ПХП теги:
strip_tags($text); Ну а далее, если ты уже решил занести в базу (хотя первый раз слышу чтобы так делали =), лучше наверно будет через explode(' ',$file_content), или сразу прочитать файл как массив, потом фильтрануть его на уникальность слов, чтобы не повторялись. Потом занести это дело в базу с полями типа: ID | WORD | URL_PAGE | PAGE_NAME При заносе следующей страницы проверять нет ли такого слова уже в базе запросом типа SELECT id WHERE word LIKE '%'.mysql_escape_string($word).'%' Вот и все =) ПРи поиске, берем текст что ввел клиент, делаем с нево масив слов и генерируем запрос и получаем результат! =) |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 3
|
Прежде всего спасибо большое, что ответили.
Прошло довольно много времени, но вопрос об организации поиска для меня остается открытым. На одном из форумов нашел следующую структуру: "Поиск через БД Mysql алгоритм следующий: 1. создаем таблицу CREATE TABLE search ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, url VARCHAR(200), content TEXT, FULLTEXT (content) ); 2. буферизируем ссылку $url=index.php //Как я понимаю, это начальная страница $bufer = file_get_contents($url); 3. обрабатываем информацию $bufer = htmlspecialchars(stripslashes($bufer)); 4. записываем в БД $sql=mysql_query("insert into search (url, content) values ('$url', '$bufer')"); PS необходимо еще будет придумать автоматический обход ссылок по сайту и пункты со 2 по 4 поместить в функцию перехода по ссылкам" Подскажите, существует ли подобный "автоматический обход ссылок" и что он из себя представляет? Если возможно, приведите пример в виде кода. Подскажите, какие существуют альтернативные способы поиска! Только в кодировке я не силен - можно сказать новичок, поэтому прошу приводить коды в качестве примера. Также, буду благодарен любому источнику информации по данному вопросу! Спасибо! |
|
|||||
|
А я бы посоветовал DataparkSearch Engine и Яndex.Server
|
|
|||||
|
Регистрация: Mar 2008
Сообщений: 3
|
Здравствуйте
Прошу помочь разобраться в ошибках с поиском. У меня есть БД MySQL с таблицей такой структуры: CREATE TABLE search ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, url VARCHAR(200), body TEXT, FULLTEXT (title) ) TYPE=MyISAM; <form action="search.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> <table width="230" border="0" cellpadding="0" cellspacing="0" class="text"> <tr align="center" class="text"> <td width="150"><input name="name" type="text" id="name" value='<?php echo $name; ?>' size="20" maxlength="50" /></td> <td width="80"><label> <input type="submit" name="button_search" id="button_search" value="Поиск" /> <input type="hidden" name="scr" value="1"> </label></td> </tr> </table> </form> <?php
if(isset($_POST['scr']))
{
if(empty($name))
{
echo "<DL><DT>Не введено искомое слово
<DD>Введите поисковое слово и повторите поиск.</DL>";
exit();
}
$name = trim($name);
$query = "SELECT * FROM search WHERE MATCH(body) AGAINST('$_POST[name]*' IN BOOLEAN MODE)
GROUP BY id ASC";
$post = mysql_query($query);
if($post)
{
$num = mysql_num_rows($post);
if($num>0)
{
echo"
<DL>
<DT>По поисковому запросу найдено соответствий: $num
</DL>
<DL>";
while($posts = mysql_fetch_array($post))
{
echo "<DT><a href=http://".$posts['url'].">".$posts['body']."</a><br>";
}
echo "</DL>";
}
else
{
echo "<DL><DT>По поисковому запросу ничего не найдено.
<DD>Попробуйте изменить искомое слово.</DL>";
exit();
}
}
}
?>
1) При не заполненном поле ввода поиска или при отсутствии искомого в БД, выдается ошибка, как прописано в коде, но код, идущий за пхп-кодом не выполняется. Такое ощущение, что после выполнения операции чтение кода прекращается... Но при выполнении поиска и выводе положительного результата в виде ссылки, все нормально. Помогите разобраться. 2) При следующем поиске (другого искомого слова) результат приписывается к предыдущему, вместо его замены... Выходит, что вместе с последним результатом на страницу выводится все то, что искалось до этого. Помогите найти и устранить ошибки. И еще кое-что. Возможно ли, чтобы при нахождении единственного результата поиска, осуществить переход сразу на страницу, содержащую искомое, без вывода ссылки-посредника (как сделано в этом коде), ведь в БД хранится запись с полем url, где прописан адрес страницы. Заранее спасибо! |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|