Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Поисковая система для Вашего сайта
Если Вы разрабатываете сайт сами или используете готовый движок, то скоро столкнетесь с необходимостью сделать качественный поиск по своему сайту.
Простейшее решение – это прикрутить готовый поиск от Google или от Yandex. Но! Наверняка оба этих "монстра" не все ваши страницы проиндексировали и включили в свой поисковый индекс, и, как следствие, при поиске они не будут находиться.
В интернете встречается большое количество простеньких поисковых скриптов, но они все отличаются одной ососбенностью: Они работают с файлами на диске. Да, некоторые позволяют искать и в PHP файлах, но если у вас используются включения SSI или include на PHP, то такой поиск не даст вам ожидаемого результата.
Используя наш сканер для генерации карты сайта, Вы можете получить готовые базы и скрипты для поиска на своем сайте. Достоинство этого решения, что поиск будет осуществлен на полностью сформированной странице, т.е. ни одно слово не пропадет из поиска.
Если Вы отсканировали Ваш сайт в любом из платных режимов, то в течение 3-х дней Вы можете проверить, как работает наша поисковая система по Вашему сайту, перед установкой её себе на сайт:
Как это работает?
Структура таблиц для поиска
В процессе сканирования формируются следующие таблицы:
Таблица page содержащая список страниц на вашем сайте:
CREATE TABLE IF NOT EXISTS page (
id INT UNSIGNED NOT NULL,
PRIMARY KEY (id),
url VARCHAR(255) NOT NULL,
size MEDIUMINT(7) UNSIGNED NOT NULL,
title TINYTEXT NOT NULL,
time DATETIME
) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin';
url - адрес страницы
size - размер страницы
title - заголовок страницы
time - время последнего изменения страницы
Таблица, указывающая на какой странице и сколько раз это слово встречается:
CREATE TABLE IF NOT EXISTS word (
page INT UNSIGNED NOT NULL,
word CHAR(30),
count MEDIUMINT(7) UNSIGNED NOT NULL,
UNIQUE (word,page)
) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin';
В таблицу попадают слова длиннее 3-х символов. Если на странице встречаются теги <index> .. </index>, то поисковые слова выбираются только из содержимого, заключенного в эти теги. Все слова преобразуются в нижний регистр.
Скрипт пока позволяет работать только с MySQL. Если будет потребность, в следующей версии сделаю работу и БЕЗ MySQL, с помощью текстовых файлов. В этом случае создается два файла соответствующей структуры. Поля в строке разделяются символом ';'.
Форма поискового запроса:
<form method=get action="/search/">
Поисковая фраза: <input type=text name="q">
<input type=submit value="Найти">
</form>
Оформите поисковый запрос в стиле своего сайта.
Скрипт поиска
Упрощенный скрипт, использующий MySQL, который будет искать по полученным базам:
// открытие БД MySQL
include_once $_SERVER['DOCUMENT_ROOT'].'/config.php';
$q=$_GET['q']; // поисковый запрос
$root='http://'.$_SERVER['HTTP_HOST'].'/';
$ar_q=explode(" ", trim($q));
$add_sql='';
for($i=0;$i<count($ar_q);$i++){
$add_sql.=' locate("'.strtolower(addslashes($ar_q[$i])).'",word)>0 and';
}
$add_sql=' WHERE page.id=word.page and '.substr($add_sql,0,-4);
echo "<ol>\n";
$query=sql('SELECT page.url,page.title,word.word FROM word,page
WHERE page.id=word.page and '.substr($add_sql,0,-4).' GROUP by page.url LIMIT 1, 10');
while ($row=mysql_fetch_assoc($query)){
echo '<li><a href="'.$root.$row['url'].'">'.$row['title'].'<br>'.$root.$row['url']."</a><br>\n";
}
echo "</ol>\n";
Полнофункциональный скрипт поиска на вашем сайте Вы можете скачать здесь.
.
Прокомментировать/Отблагодарить