Пятница, 10.05.2024, 03:14
Приветствую Вас, Гость!

SeoHaos
Категории каталога
Мои файлы [2]
Друзья сайта
Наш опрос
Оцените мой сайт
Всего ответов: 4
Начало » Файлы » Мои файлы

W3Search - система поиска по сайту
[ Скачать с сервера (12.4 Kb) ]
W3Search — это компактная система поиска по сайту. В отличие от множества похожих на неё систем, она индексирует не скрипты на сервере, а собственно генерируемые скриптами страницы. И прекрасно подходит для динамических сайтов,

Основные особенности
Возможность лёгкого встраивания поиска в сайт
Поддержка cURL
Поддержка индексирования определённой страницы по запросу (из своего скрипта)
Понимание тега
Перекодировка на лету страниц к кодировке windows-1251 (в ней работает поисковик) и возможность отключения этой перекодировки
Возможность указывать расширения, которые поисковик не обрабатывает
Возможность указывать MIME-типы, которые поисковик должен обрабатывать
Возможность имитировать пользовательский браузер (задание параметра User-Agent)
Поддержка чёрного списка URL-ов, которые индексировать нельзя
Понимание заголовков ответа сервера (таких, как Location, Content-Encoding) и кодов ответов (вся группа 4•• и 5••)
Так как поиск при работе использует всего 1 таблицу базы данных, нет необходимости заводить дополнительную БД.
В результатах поиска помимо заголовка страницы показываются и куски текста с найденными словами (начиная с версии 1.0.5).
Скрипт прекрасно работает следующих настройках:
- register_globals = off
- display_errors = on
- error_reporting = E_ALL
Бесплатность ;) и многое другое…

Принцип работы
Принцип работы всего поисковика состоит из двух этапов:
Индексация сайта. После установки и настройки W3Search на сайт происходит постепенная индексация страниц сайта. В это время специальный модуль просматривает Ваш сайт, модифицирует найденные данные в удобочитаемый (для поиска) вид и записывает результат в базу данных.
Собственно поиск. Когда пользователь вводит свой запрос поисковик обращается к базе данных, просматривает страницы на совпадение с запросом пользователя и возвращает результат.

При поиске можно указывать спецсимвол «!» (восклицательный знак). Он означает, что слово, следующее за ним не должно присутствовать в результате. Например, при запросе
мама мыла !раму
Будут найдены документы, в которых есть слова «мама» и «мыла», но где отсутствует слово «рама». Хотя, если в тексте документа будет строка «Мама мыла Рому» (а слова «раму» не будет), то этот документ будет прекрасно найден.

Также при поиске можно указывать части слов. Например, по запросу
кило
Будут найдены страницы, в которых присутствуют слова «килобайт», «килограмм» или, скажем, «километр».

Регистр запроса никак не влияет на результат поиска (то есть запросы «мама» и «МаМа» вернут одинаковый набор найденных страниц.

Поиск и индексация, как правило, происходят независимо друг от друга. Причём, если количество использований поиска прямо пропорционально объёму и посещаемости сайта, то индексация, как правило, запускается каждый час (впрочем, это зависит от того, как разработчик настроит скрипт) и проверяет, не устарела ли информация в поисковом индексе, а если замечает устаревание заново проводит чтение необходимых страниц.

Установка скрипта
Операция несложная (в отличие от настройки) и состоит из нескольких этапов:
Скачайте и распакуйте архив с поисковиком в папку с Вашим сайтом.
Импортируйте следующий SQL-запрос в Вашу базу данных:
CREATE TABLE `ИМЯ_ТАБЛИЦЫ` (
`url` varchar(255) NOT NULL default '',
`referrer` text NOT NULL,
`title` text NOT NULL,
`text` mediumtext NOT NULL,
`md5` varchar(33) NOT NULL default '',
`lastupdate` int(10) unsigned NOT NULL default '0',
UNIQUE KEY `url` (`url`),
UNIQUE KEY `md5` (`md5`)
);

INSERT INTO `ИМЯ_ТАБЛИЦЫ` VALUES ('/', '', '', '', '', 0);

CREATE TABLE `ИМЯ_ТАБЛИЦЫ_cache` (
`key` varchar(32) NOT NULL default '',
`date` int(10) unsigned NOT NULL default '0',
`count` int(10) unsigned NOT NULL default '0',
`pages` text,
`query` varchar(255) NOT NULL default '',
`words` text NOT NULL,
PRIMARY KEY (`key`)
);
Вместо ИМЯ_ТАБЛИЦЫ необходимо подставить любое имя, например, search. Впоследствии, именно это имя необходимо будет вписать в файл конфигурации поиска.
Установите для файлов w3s_inc/blacklist.conf права 0777.
Настройте поисковик (подробнее).
Вставьте на сайт форму поиска. В качестве примера Вы можете использовать стандартную форму поиска:




Обязательно укажите корректный путь до search.php (в данном примере файл с формой должен располагаться в той же папке, что и search.php).

Лучше всего распаковать поиск в корневую папку сайта и указывать путь от корня сайта: /search.php
Настройте индексатор (см.ниже).

Настройка поиска

Все данные для настройки поиска расположены в одном файле: [ПАПКА ПОИСКА]/w3s_inc/search.conf
Чтобы настроить поиск, откройте этот файл любым текстовым редактором (например, Блокнотом Windows).
Каждая настройка в файле search.conf прокомментирована, однако я привожу здесь более полные их описания:

URLHOST
URL сайта, на котором работает поиск. Без http:// и дополнительных слешей.
Пример: если поиск установлен на сайте http://www.yandex.ru, то значение будет: www.yandex.ru

UPDATE_EVERY
Сейчас, когда каждый сайт способен динамически меняться в зависимости от времени суток, погодных условий и вообще чего угодно, очень важно, чтобы у поисковика был свежий поисковый индекс. Данная директива задаёт в секундах через какой период времени запись в базе данных считается устаревшей и должна быть обновлена.
Например, запись 60*60*24 (а можно использовать и математические выражения) означает, что проиндексированная страница «действительна» в течение суток. Если сайт обновляется редко, можно установить значение в 60*60*24*7 (1 неделя).

PAGES_PER_TIME
Чтобы не завешивать сервер за один запуск индексатора просматривается не весь сайт целиком, а, как правило, некоторое количество страниц. Это количество и задаётся директивой PAGES_PER_TIME.
Например, если в базе есть 100 устаревших страниц (которые необходимо проиндексировать), а значение PAGES_PER_TIME = 20, то все эти 100 документов будут просмотрены за 5 проходов индексатора.
Естественно, что чем больше страниц за раз просматривает индексатор, тем больше времени у него на это уходит.

USE_NOINDEX_TAG
Если Вы хотите, чтобы часть страницы Вашего сайта не была проиндексирована, просто заключите её в теги . Тогда обычные поисковики (Яндекс, например, или Гугл) эту часть пропустят. А если USE_NOINDEX_TAG = TRUE, то эту часть пропустит и W3Search.

CAN_USE_CURL *
Поисковик будет при индексации использовать модуль cURL вместо стандартной функции fsockopen если модуль cURL установлен на сервере. Можно принудительно запретить это, установив значение CAN_USE_CURL = FALSE;

DECODE_DATA *
Директива определяет, необходимо ли менять кодировку. Если Ваш сайт написан в кодировке windows-1251, то установите DECODE_DATA = FALSE, иначе — TRUE.

DECODE_METHOD
Так как поисковик работает в кодировке windows-1251, сайты написанные в других кодировках ему чужды. Поэтому перед индексацией он переводит их в понятный вид.
Данная переменная принимает одно из двух значений: cyr или iconv.
Если Ваш сайт работает в одной из следующих кодировок: koi8-r, cp866 (она же dos, alt-866), iso8859-5 или maс (x-mac-cyrillic), смело ставьте значение cyr, если не помогает (или Ваш сайт сделан в UTF-8) — iconv
Кодировка проверяется через заголовки ответа сервера (Content-Type, в частности) и через -теги, причём последние имеют больший приоритет.

USE_INDEX_DELIMITERS *
Разрешить использовать ограничители индексации. Если TRUE, то индексация страницы идёт:
от значения INDEX_DELIMITER_START до значения INDEX_DELIMITER_END, если и INDEX_DELIMITER_START и INDEX_DELIMITER_END присутствуют в коде страницы.
от значения INDEX_DELIMITER_START до конца текста страницы, если INDEX_DELIMITER_START присутствует в коде страницы, а INDEX_DELIMITER_END отсутствует.
с начала страницы до значения INDEX_DELIMITER_END, если INDEX_DELIMITER_END присутствует в коде страницы, а INDEX_DELIMITER_START отсутствует.

INDEX_DELIMITER_START *
В случае если USE_INDEX_DELIMITERS = TRUE, поисковой робот начнёт индексацию страницы с первого обнаружения значения INDEX_DELIMITER_START до первой встречи INDEX_DELIMITER_END (либо до конца страницы, если INDEX_DELIMITER_END отсутствует).

INDEX_DELIMITER_END *
В случае если USE_INDEX_DELIMITERS = TRUE, поисковой робот закончит индексацию страницы при первом обнаружении значения INDEX_DELIMITER_END.
Пример с INDEX_DELIMITER_*: USE_INDEX_DELIMITERS = TRUE;
INDEX_DELIMITER_START = "";
INDEX_DELIMITER_END = "";
Текст страницы:
проверка

Приветствуем!



Кем вы были в прошлой жизни?



Да мы понятия не имеем!


В этом примере будет проиндексирован только текст «Кем вы были в прошлой жизни?», всё остальное затронуто не будет.

Хорошей идеей будет установить INDEX_DELIMITER_START = "", а INDEX_DELIMITER_END = "": тогда поисковик будет индексировать только текст страницы и не будет трогать всё остальное.

Настройки поиска:

RESULTS_PER_PAGE
В случае, когда при поиске результатов получилось очень много (скажем, 100 результатов), они выводятся постранично. Данный параметр указывает, сколько результатов показывать на странице.

RESULT_QUOTES *
В результатах поиска W3Search может отображать предложения из найденной страницы. Количество отображаемых предложений задаётся этой директивой. По умолчанию — 3.

HEADER
Путь к файлу с заголовком страницы результатов поиска.
Как правило, многие сайты построенные на PHP используют одинаковые файлы заголовка и подвала страницы. Их-то и можно указать в этих директивах (тогда результаты поиска будут показываться в Вашем дизайне).
Файл присоединяется через require_once()

FOOTER
Путь к файлу с подвалом страницы результатов поиска.
Как правило, многие сайты построенные на PHP используют одинаковые файлы заголовка и подвала страницы. Их-то и можно указать в этих директивах (тогда результаты поиска будут показываться в Вашем дизайне).
Файл присоединяется через require_once()

Настройки MySQL:

HOST
Хост сервера MySQL. Как правило localhost, хотя если Вы пользуетесь хостингом от Мастерхоста, то это будет код_площадки.mysql.masterhost.ru

DATABASE
Имя базы данных, в которой была создана таблица для поисковика.

TABLE
Имя таблицы с поисковым индексом

USER
Имя пользователя MySQL

PASSWORD
Пароль пользователя MySQL

Другие настройки:

HTTP
Версия протокола HTTP, в которой посылать запросы к сайту. По умолчанию используется 1.0, но можно сменить на 1.1

UA
User-agent — строка, по которой сайт может определить браузер пользователя.
При индексации сайтов W3Search представляется как
W3Search/1.0 [PHP 5.0.5, http://w3search.info/]
По этому коду Ваш сайт (если он написан на PHP, например) может опознать поисковик и выдать ему облегченную версию страницы, тем самым снизить нагрузку на сервер (тем более, что поисковик всё равно выкидывает всё оформление).

$acceptMIMETypes
MIME-типы потоков, которые индексирует поисковик.
О том, что такое MIME читайте
http://www.citforum.ru/internet/servers/glava2_5.shtml
http://www.citforum.ru/internet/common/rfc1521.shtml
http://www.google.com/search?hl=en&q=MIME
Коротко говоря, если при запросе поисковик получил MIME-тип image/png, он этот запрос отменит, потому что и моржу понятно, что там картинка.
По умолчанию разрешено принимать text/html и text/plain.

$deniedExtensions
Массив расширений файлов, которые индексировать нельзя. Скажем, если в коде страницы встречается ссылка на файл queen.mp3, а расширение mp3 находится в этом массиве, то файл индексироваться не будет. Данный массив уже заполнен многими стандартными расширениями, но Вы можете дополнить его своими, если хотите.

$replacementArrays
Данный ассоциативный массив содержит два подмассива: в подмассиве $replacementArrays['from'] содержатся исходные строки, а в подмассиве $replacementArrays['to'] — выходные.
При обработке текста исходные значения будут заменены на выходные.
Пример: допустим, что массив выглядит так:
$replacementArrays=array(
'from'=>array(
'шило',
'мама'
),
'to'=>array(
'мыло',
'рама'
)
);
А в странице есть текст:
Мама мыла раму. Шило меняла на мыло.
То в результате преобразований получится текст:
Рама мыла раму. Мыло меняла на мыло.

$stopWords
Массив слов, которые безжалостно удаляются из текста при индексации (и, соответственно, не ищутся при поиске). Сюда можно ввести название сайта, ведь, согласитесь, зачем искать в поиске как называется сайт, на котором сейчас находишься?

Настройка индексатора

Как уже говорилось выше, чтобы начать искать у поисковика должна быть база документов, по которым он будет производить поиск. Процесс индексации страниц сайта производится с помощью запуска программ по расписанию (т. н. cron).

За 1 проход индексатор просматривает до PAGES_PER_TIME страниц, и, естественно, не может за это время проиндексировать весь сайт целиком. Поэтому, как правило, настраивается cron-задача, которая запускает индексатор каждые N-минут.

О том, как его настроить и будет рассказано в этом разделе.

Для начала необходимо знать, в каком виде будет запускаться скрипт. Если в cron-е Вы просто пропишите путь к скрипту, то ничего хорошего Вы не получите (ведь скрипт на PHP — это всего лишь текст), поэтому саму команду запуска необходимо писать так:
/usr/bin/php …/w3s_inc/robot.php > /dev/null

Где вместо троеточия нужно указать полный путь от корня серверного диска до папки w3s_inc.

Например, если путь к Вашему сайту /home/sitename/public_html, а поиск размещён в корневой папке вебпространства, то нужно указать путь /home/sitename/public_html/w3s_inc/robot.php

Подробности о cron-е тут - http://www.citforum.ru/operating_systems/manpages/CRONTAB.1.shtml.

Так как в мои планы не входит полное описание спецификации работы cron-а, я остановлюсь лишь на готовых вариантах настроек.
Вариант 1:
* * * * * /usr/bin/php …/w3s_inc/robot.php > /dev/null

Запуск будет производиться каждую минуту.
Вариант 2:
*/5 * * * * /usr/bin/php …/w3s_inc/robot.php > /dev/null

Запуск будет производиться каждые 5 минут.
Вариант 3:
0 * * * * /usr/bin/php …/w3s_inc/robot.php > /dev/null

Запуск будет производиться каждый час.
Вариант 4:
0 */3 * * * /usr/bin/php …/w3s_inc/robot.php > /dev/null

Запуск будет производиться каждые 3 часа.

Также многие хостинг-провайдеры предоставляют панели управления хостингом, которые содержат модули, позволяющие в более удобном виде задать cron-выражение (с явным указанием времени повтора). В частности, такая функция есть в cPanel - http://www.cpanel.net/.

Частый вопрос, который мне задают звучит так: «А что делать, если хостинг-провайдер не даёт доступа к cron?»

Я предусмотрел этот вариант, и предлагаю Вам простое решение: на этом сайте существует функция «Удалённое индексирование». Суть функции состоит в том, что один раз в N минут (период настраивается) мой сервер обращается к Вашему сайту и вызывает скрипт robot.php, тем самым избавляя Вас от настройки и использования cron-а.

Интеграция с сайтом

Сейчас всё больше сайтов, которые пишутся на разных языках веб-программирования позволяют добавлять материалы на сайт на лету. И, соответственно, необходимо, чтобы и поиск «узнавал» о новых страницах как можно быстрее.

Для того, чтобы сообщить поисковику, что появилась новая страница (или изменилась старая), вполне достаточно подключить файл функций индексатора и вызвать всего одну функцию:
define('SEARCH_INCLUDES', 'путь/до/w3s_inc');
// Обязательно определяем эту константу! Она используется при поиске!

require_once SEARCH_INCLUDES . '/search.conf';
// Подключаем файл настроек и функций индексатора

w3s_indexURL('URL');

Вместо URL указываем путь к странице от корня вебпространства. Например, если мы хотим проиндексировать страницу http://www.yandex.ru/search/404.html, то должны указать путь /search/404.html (т. е. всё, что находится после доменного имени).

Функция w3s_indexURL() возвращает результат формата string, который может принимать одно из трёх значений: added — страница добавлена в индекс, not added — страница не добавлена в индекс, deleted — страница не только не добавлена в индекс, но и добавлена в чёрный список.

Чёрный список страниц

Для начала о том, почему страница может попасть в чёрный список. Это может произойти если в качестве ответа сервера пришёл один из следующих заголовков:
401

Для просмотра страницы требуется авторизация. Так как эта функция не поддерживается поиском, страница добавляется в чёрный список.
403

Доступ к странице запрещён.
404

Страница не найдена.
406

Тип документа не поддерживается поисковиком. Также, эту ошибку поисковик искусственно генерирует, когда MIME-тип получаемого потока не соответствует допустимым для чтения типам.
410

Страница была насовсем удалена с сервера (правда, очень редко сервера выдают этот заголовок).
5??

Ошибки, начинающиеся с цифры 5 (сюда относят и ошибку 500, и другие) просто игнорируются индексатором, но если код ошибки равен 503 (данный код означает, что данная служба временно недоступна), страница удаляется из индекса и добавляется в чёрный список.

В случае, если сервер присылает заголовок Location, и новый адрес не выходит за пределы текущего сайта, поиск перенаправляется на новую страницу.

Дизайн результатов

Чтобы изменить внешний вид отображения результатов необходимо отредактировать следующие файлы (все они находятся в папке w3s_inc):
header.php — заголовок страницы с результатами
footer.php — подвал страницы с результатами
search_item.php — внешний вид одной записи-результата
search_pages.php — внешний вид списка страниц
search.css — таблица стилей отображения результатов поиска

Вместо header.php и footer.php можно указать собственные файлы заголовка и подвала страницы (делается это в файле конфигурации поиска).

Лицензионное соглашение

Все права на скрипт принадлежат его автору.
Скрипт является бесплатным ПО. Никто кроме автора не имеет права продавать скрипт (или использовать его в иных коммерческих целях).
Автор скрипта не обязан предоставлять техническую поддержку пользователям. Особенно, если ответ на вопрос пользователя можно найти в справке или багтрекере проекта.
«Не обязан» и «Не будет» — очень разные вещи!
В наибольшей степени, допускаемой действующим законодательством, ни при каких обстоятельствах автор не несёт ответственность за какой-либо особый, случайный, косвенный или опосредованный ущерб или убытки (включая, но не ограничиваясь только перечисленным, упущенную выгоду, убытки, вызванные утратой конфиденциальной или иной информации, перерывами в коммерческой или производственной деятельности, нанесением ущерба здоровью, нарушением неприкосновенности частной жизни, неисполнением любого обязательства, включая обязательство действовать добросовестно и с разумной осмотрительностью, убытки, вызванные небрежностью, любой иной ущерб и прочие убытки имущественного или иного характера), возникающие в связи с использованием или невозможностью использования программы либо оказанием или неоказанием услуг по технической поддержке, а также с любыми другими положениями настоящего лицензионного соглашения, даже в случае отказа работы скрипта, гражданского правонарушения (включая халатность), строгой ответственности, нарушения договора автора, даже если автор был заранее извещён о возможности такого ущерба или убытков.

Удаленное индексирование

В том случае, если Ваш хостер не даёт доступа к cron, а без него поиск не работает, Вы можете воспользоваться службой «Удалённое индексирование» нашего сайта - http://evgeny.neverov.name/portfolio/w3search/remoteindex/

Категория: Мои файлы | Добавил: seohaos | Автор: Евгений Неверов
Просмотров: 2270 | Загрузок: 238 | Комментарии: 3 | Рейтинг: 0.0 |

Всего комментариев: 2
2 Onufrii8138  
0
на вышеприведенном веб-сайте подобран большой ассортимент умных статей про http://medbaz.com/pages-more-854.html - папилломы на теле.

1 vzupat  
0
Благодарствую!

Имя *:
Email *:
Код *:
Copyright MyCorp © 2006