Индексирование и поиск на HTTP серверах

см. также:
поиск на FTP серверах »
поиск в локальной сети »
поиск на веб-сайтах с помощью Интегры »

Сетевой паук в поисковом движке

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

Принцип работы паука стандартен. Получив для затравки адрес веб-ресурса (см. команду -url), поисковик загружает веб-страницу и сканирует ее в поисках других гиперссылок (если это разрешено - см. команду -href). Обнаруживаемые гиперссылки фильтруются (команды -urimask и -urinotmask) и проверяется, что они еще не были посещены в этом сеансе поиска. Скачанная веб-страница направляется для обработки поисковым движком для поиска паттерна или индексирования. Затем поисковик приступает к загрузке веб-ресурсов по найденным и отобранным гиперссылкам, контролируя трафик (-maxtraffix) и глубину погружения по гиперссылкам (-maxdepth).

Простой поиск без использования индексатора

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

faind -url "http://127.0.0.1:8080" -index off -href=true -wordforms -sample "движок"

В этом примере команда -href=true разрешает поисковику следовать по гиперссылкам.

Результат работы (начало сканирования) для консольной поисковой утилиты φaind показан на скриншоте:

поиск на веб-сервере

Фильтрация гиперссылок

Чтобы отсеивать гиперссылки на обрабатываемых страницах, используйте команды -urimask и -urinotmask.

Следует отличать эффект от команд фильтрации документов (-iname или -inotname) и фильтрации гиперссылок. Фильтры гиперссылок ограничивают действия сетевого паука, запрещая ему посещать определенные веб-ресурсы, или разрешая посещать только определенные страницы. С помощью этих фильтров можно запретить поисковой машине посещать баннерные ссылки:

-urinotmask "(.+)banner(.+)" -urinotmask "(.+)advert(.+)"

В данном случае фильтр запрещает работать с гиперссылками, содержащими подстроку banner или advert.

 

Предупреждение о кодировках

Особое внимание обращайте на правильное указание кодировок для обрабатываемых сайтов. Как это ни печально, очень большое число сайтов (не только в рунете, но в других национальных зонах) сверстано небрежно. Даже крупные порталы зачастую пренебрегают указанием кодировки, к примеру Yandex не указывает кодировку на своих веб-страницах (хотя и передает ее в HTTP-заголовке ответа), в то время как Google - аккуратно ставит utf8.

Автоопределение кодировки срабатывает не всегда, так как codepage guesser пытается подобрать кодировку по нескольким первым словам документа, и если веб-страница имеет в начале большой скрипт с преимущественно английскими словами, корректность определения кодировки сомнительна.

 

Индексирование содержимого веб-серверов

Содержимое веб-сервера, доступное по протоколу HTTP, может быть проиндексировано обычным порядком для ускорения последующих поисков информации. Обратите внимание на то, что индексная база по сайту сохраняется на локальной (клиентской) машине..

Рассмотрим опять-таки пример с веб-сервером в локальной сети. Среди содержимого сайта мы не будем скачивать и индексировать архивы и установочные файлы, то есть имеющие расширения *.zip, *.exe, *.tgz, *.bz.

Во-первыхх, создаем индексную базу

faind -index create_domain=локальные_серверы

Далее, выполняем собственно индексирование:

faind -index domain=локальные_серверы -href=true -maxdepth=100 -store_download=false -url http://10.110.45.17:8080 -notname "*.zip;*.exe;*.tgz;*.bz"

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

fand -index domain=локальные_серверы -sample "поисковый движок" -tune htmlres_2 -listfiles:html res.html

Обратите внимание, что данный запрос не приводит к подключению к веб-серверу, так как требуется только вернуть список имен подходящих документовв. Результат может быть таким:

результат поиска на проиндексированном веб-сайте

Небольшая модификация запроса, а именно употребление команды -index touchfiles, позволяет получить на странице результатов также контексты в документах, но при этом поисковая машина будет подключаться к соответствующему веб-серверу

fand -index domain=локальные_серверы -distance=s -sample "поисковый движок" -index touchfiles -tune htmlres_2 -listfiles:html res.html

Результат поиска будет примерно такимм:

Результат поиска на проиндексированном веб-сервере с выдачей контекстов

Дополнительные материалы

Процедурный API поисковой системы

Синтаксис поисковых запросов

Синтаксис определения области поиска

Где скачать поисковую систему и SDK

Скачать SDK поисковой системы с примерами и другие компоненты можно здесь поисковая система

  © Mental Computing 2010
изменено 01-Jun-10