Собственный поисковик: Веб интерфейс

Собственный поисковик: Веб интерфейс – урок о том как написать собственный поисковик на PHP, который будет искать в базе данных MySQL.

как сделать собственный поисковик?
как организовать поиск по базам данных?

Сегодня мы с вами сделаем поисковик типа google, yandex, aport, rambler, yahoo.

Точнее у нас будет МетаПоисковик. Поисковик будет искать в интернете сайты, веб-страницы по мета тегам и заголовку, как в самые первые поисковики, но насколько он будет хорошим зависит только от вас. Вы можете добавить что-нибудь новое, супер алгоритм и т.д и т.п. Может у Вас получится конкурировать даже с Google и Яндекс, кто знает все бывает.

Перед тем как начать писать свой поисковик, разделим его на 3 части:
1) Веб-интерфейс поисковика, реализуем мы его на языке PHP.
2) Индекс (База данных MySQL), где будет хранится вся информация о страницах.
3) Поисковый робот, индексирует веб-страницы, заносит данные в индекс, сделаем на Delphi.

сразу скажу что я не буду делать паука, который должен был бы находить url адреса.


Итак, начнем:

Веб-интерфейс поисковика

Интерфейс собственной поисковой системы

Веб интерфейс такого рода сайт, который позволяет производить поиск по базам MySQL.

создайте файл index.php. Код:

объясняю по частям:

во первых надо разделить свою страницу на две части, проще всего для этого использовать таблицы.

поисковая форма
результаты поиска

в верхней части надо создать форму, который будет посылать информация файлу index.php методом GET. На нем будут расположены 3 элемента, одно текстовое поле и две кнопки, одна для отправки запроса поисковику, а другая для очистки поля (конечно, можно им пренебречь, ведь в поискавиках обычно такого нет).
<form action="index.php" method="get" name="form1">
<label><input name="search" type="text" value="" size="80" maxlength="80" /></label>
<label><input name="button" type="submit" value="Искать" /></label>
<label><input name="Reset" type="reset" value="Очистить" /></label>
</form>

даем текстовому полю имя “search”, а кнопке отправляющий поисковый запрос – “Искать”, самой же форму оставляем имя по умолчанию – “form1″.

Результаты будут выводится в нижней части таблицы с помощью php, поэтому открываем тег <?php и начинае кодить.

для начала подключимся к базе данных, для этого нам надо подключить конфигурационный файл, так как именно он подключает к базе данных mysql. Конфигурационный файл вынесен специально для удобства.
include "config.php";

далее проверяем была ли нажата кнопка “Искать”
if (isset($_GET['button'])){ выполняемый код, если нажата кнопка } else { выполняемый код, если НЕ нажата кнопка }

Если нажата кнопка искать, то проверяем наличие поискового запроса
if (isset($_GET['search'])){$search=$_GET['search'];}

Если есть присваиваем переменной $search текст поискового запроса, для последующей обработки. Надо будет наш запрос подредактировать, удалить опасные символы и т.д.
$search=trim($search);
$search=stripslashes($search);
$search=htmlspecialchars($search);
$search_t=$search;
$search=str_replace("'","&quot;",$search);
$search=ereg_replace(" +"," ",$search);
$search=strtolower($search);
$search=trim($search);

теперь проверяем наш запрос, он не должен быть пустым и короче 3 символов (чтоб сервер не сильно нагружался).
if ($search!='' && strlen($search)>2){ код поиска по базе данных } else {echo "<h3>Задан пустой поисковый запрос или строка поиска содержит менее 3 символов.</h3>";}

Если поисковый запрос удовлетворяет верхнему условию, то запускается непосредственно сам поисковый скрипт.
$result=mysql_query("SELECT * FROM base WHERE description LIKE '%$search%' OR title LIKE '%$search%' OR keywords LIKE '%$search%' OR url LIKE '%$search%' LIMIT $start, $num",$db);
if (!$result){exit(mysql_error());}
$i=1;
if (mysql_num_rows($result)>0){
echo "Найдено ".$posts." страниц";
$myrow=mysql_fetch_array($result);
do
{
printf ("<h3><a href=%s target='_blank'>%s. %s</a></h3>
<p>%s</p><p style='font-size:10px; color:#666666;'><u>Keywords:</u> %s</p>
<a href=%s class='url' target='_blank'>%s</a>",$myrow['url'],$i+$start,$myrow['title'], $myrow['description'],$myrow['keywords'],$myrow['url'],$myrow['url']);
$i++;
}
while ($myrow=mysql_fetch_array($result));

Поиск будет производится посредством LIKE без учета релевантности, поэтому наш поисковик будет выводить результаты по дате добавления. Если объяснить работу этого скрипта простыми словами, то будет так: Выбрать все записи из таблицы base где в полях description, title, keywords, url встречается запрос $search по $num количеству начиная с $start. Переменная $num – количество результатов на страницу, я поставил 10, так как в Google и Yandex 10 =) Далее запускаем цикл, который будет выводить результаты поиска через printf.

Конечно же вы можете заменить мой “алгоритм” поиска на свой более лучший с учетом релевантности, возможно вы сделаете типо тИЦ и PR.

]]>

Добавить в закладки
Memori БобрДобр Google Яндекс Твиттер del.icio.us Мистер Вонг МоёМесто MyScoop RuSpace Сто закладок

]]>

Теги: , , , ,

3 комментариев по “Собственный поисковик: Веб интерфейс”

  1. ]]>Собственный поисковик: Веб интерфейс (продолжение)]]> сказал:
    июля 17, 2009 в 00:42

    [...] Веб интерфейс (продолжение) – вторая часть урока о том как написать собственный поисковик на PHP, который будет искать в базе данных [...]

  2. ]]>Собственный поисковик: База Данных]]> сказал:
    июля 17, 2009 в 22:26

    [...] Урок создания поисковика – часть 3 «База данных». В этом уроке мы рассмотрим базу данных нашего поисковика («Урок создания собственного поисковика»). [...]

  3. ]]>Собственный поисковик: Поисковый робот]]> сказал:
    июля 17, 2009 в 23:07

    [...] Поисковый робот» – 3 часть урока по созданию собственного поисковика, мы с вами создадим поисковый робот (crawler или spider), [...]

Оставьте комментарий: