InetProg.info - PHP, Perl, Python, Mysql, PostgreSql - статьи и книги InetProg.info - PHP, Perl, Python, Mysql, PostgreSql - статьи и книги  
 
     
Если Вы пишете авторские статьи по интернет - программированию, веб-дизайну или
веб программированию и хотите, чтобы они "увидели свет", свяжитесь с нами, и мы разместим их на сайте.
Также, если Вы хотите заработать немного денег на продаже статей, мы с радостью купим их у Вас.

Требования к статьям

1. Статьи должны быть написаны только Вами.
2. Смотри п.1


Друзья

Поисковая система на сайте


Зачем это нужно?
Индексирующий скрипт
Обработка поискового запроса
Вывод результатов поиска

Что это такое и зачем это нужно?

Допустим, у нас пять тысяч страниц на сайте.. Каждая имеет свою уникальную и очень важную информацию, которая нужна посетителю сайта.
Он может воспользоваться одной из крупных поисковых систем, например Яндексом или Google, чтобы найти нужную информацию, и сразу попадет на нужную ему страницу.
Но что делать, если в базе этих поисковых систем не будет тех страниц, на которых храниться интересующая его информация, и он случайно попал на ваш сайт(например, услышал от знакомых или прочитал на другом сайте)?
Он будет искать необходимую ему информацию, "ходя" по ссылкам на сайте и, если ему повезет, он найдет именно то, что ему нужно. В результате такого "хождения" мы можем потерять посетителя, и он никогда не вернеться на сайт, а может и наоборот, если во время "блужданий" он найдет еще какую-либо информацию, которая будет интересна ему..
Так зачем же так мучить посетителя, если можно сделать поисковую форму, чтобы он ввел запрос и получил ссылку на страницу с интересующим его содержанием?
Собственно это мы и будем делать - систему поиска на сайте(или "поисковой скрипт", "скрипт поиска по сайту", называйте как хотите:))

Итак, поехали!

Индексирующий скрипт

С начала определимся с задачами, а именно, что должен делать этот скрипт.
Есть несколько вариантов: скрипт будет "просматривать" все директории, открывать каждый файл в каждой директории, и заносить содержание файла в индексную базу. При этом все файлы будут проиндексированы, и добавлены в индекс, в том числе и такие файлы, которые мы не хотим показывать пользователю.
К таким файлам могут относиться, например, служебные скрипты, какие-то секретные файлы и пр.
Мы сделаем по-другому. Скрипт будет "ходить" по ссылкам, и заносить в индексную базу только те файлы, которые мы хотим показывать пользователю. Почему именно те файлы, которые мы хотим отдать пользователю? А потому, что он будет добавлять в индексную базу только те страницы, на которые установлены ссылки с главной страницы, с главной страницы идут ссылки на другие страницы, с этих "других" страниц идут ссылки на следующие страницы, т.е. он будет индексировать только видимые пользователю документы.

Потом, когда скрипт будет индексировать страницы, их необходимо будет модернизировать, а именно:
вырезать все html-тэги, удалить все знаки препинания, восклицательные знаки, скобки и прочие не нужные нам символы. Потом, после удаления всех ненужных символов,необходимо удалить все повторяющиеся слова. И, наконец, после проделывания всех этих операций, в базу будем добавлять только ключевые слова.
К примеру, следующий текст:

после тяжелого дня своей работы она пришла домой, и увидела его: он стоял на лестнице, сжимая в руке большой(ничего не подумайте:)) сверток газет, и размахивая этим свертком, отгонял комаров


превратиться в следующее:

после тяжелого своей работы пришла домой увидела стоял лестнице сжимая руке большой ничего подумайте сверток газет размахивая свертком отгонял комаров


потом удалим повторяющиеся слова, в данном случае сверток и свертком:

после тяжелого своей работы пришла домой увидела стоял лестнице сжимая руке большой ничего подумайте сверток газет размахивая отгонял комаров


Объем текста уменьшился почти в два раза!
Потом, также, можно многие слова убрать, например "свой", "своей", "своим", "свои", т.е. в данном случае удалять слова по маске "сво*", тогда вышеприведенный текст примет вид:

после тяжелого работы пришла домой увидела стоял лестнице сжимая руке большой ничего подумайте сверток газет размахивая отгонял комаров


Потом, также, можно удалить слова "после", "также", и прочие слова, не несущие смысловой нагрузки, тем самым мы уменьшим нашу индексную базу.
Также, желательно будет поудалять окончания со слов, например "те", "ая", "ов", "ой" и другие, т.е. в нашем случае получим текст:

тяжелого работы пришла домой увидела стоял лестнице сжим* руке большой ничего подумай* сверток газет размахив* отгонял комар*


Таким образом индексная база занимает меньше места на диске, что в нашем случае имеет большое значение( у нас ведь пять тысяч страниц на сайте).

Итак, с обработкой текста разобрались.

Теперь определимся со ссылками, по которым будет "ходить" скрипт.
Допустим, наша страничка имеет следующий код:

<html>
<head>
<title>Поздний вечер</title>
</head> <body> после тяжелого дня своей работы она пришла домой, и увидела его: он стоял на лестнице, сжимая в руке большой(ничего не подумайте:)) сверток газет, и размахивая этим свертком, отгонял комаров
<hr>
<a href="http://урл_нашего_сайта/utro.html">Следующим утром</a>
<a href="http://урл_нашего_сайта/vecher2.html">Следующим вечером</a>
<a href="http://урл_нашего_сайта/den_rogdenia.html">День рождения</a>
</body>
</html>


Нам необходимо будет "вытащить" три ссылки из нашей странички:

<a href="http://урл_нашего_сайта/utro.html">Следующим утром</a>
<a href="http://урл_нашего_сайта/vecher2.html">Следующим вечером</a>
<a href="http://урл_нашего_сайта/den_rogdenia.html">День рождения</a>


Для того, чтобы вытащить ссылку из текста, будем искать в коде странички любой текст, начинающийся с "<a href="", после этого фрагмента идет сам URL странички, и он заканчиваеться подстрокой """.
После того, как мы вытащим ссылку(URL) из странички, необходимо будет создать еще одну небольшую базу данных, в которой будут находиться адреса найденых и непроиндексированных страниц.
И еще один момент:
Скрипт должен удалять из этой базы URL проиндексированных страниц.

Итак, с задачами для индексирующего скрипта вроде определились:

0. Проверяем, существует ли страница

1. Указываем начальную страницу(страницу, с которой скрипт будет начинать индексировать сайт)

2. Выбираем адреса других страниц

3. Добавляем их в очередь, предварительно удаляя все "левые" ссылки на другие сайты

4. Обрабатываем текст, удаляя все html-теги, знаки препинания, слова, состоящие из менее трех букв и обрезаем слова, удаляя их окончания

5. Добавляем обработанный текст в базу

6. Берем следующий URL, который необходимо проиндексировать и повторяем все до тех пор, пока не проиндексируем все "видимые" страницы.


На этом пока что остановимся. Продолжение статьи скоро напишу, как только время свободное появиться.
Ждите продолжения статьи!
Удачи!:)

Источник: http://inetprog.info

   
 
Copyright © 2005-2008 — COD3SUN
 
 
новости книги контакты статьи ссылки форум правила пользования информацией правила пользования информацией на главную контакты