Глава 3. Индексирование

Содержание
3.1. Общая информация об индексировании
3.2. Реакция на коды HTTP-ответа
3.3. Поддержка Content-Encoding
3.4. Конфигурирование indexer
3.5. Расширенные возможности индексирования
3.6. Использование syslog
3.7. Хранение сжатых копий документов

3.1. Общая информация об индексировании

3.1.1. Конфигурирование

Сначала необходимо сконфигурировать DataparkSearch. Конфигурирование indexer полностью описано в файле indexer.conf-dist. Вы найдете его в директории etc исходников DataparkSearch. Вы также можете посмотреть примеры в директории doc/samples.

Для установки файла indexer.conf перейдите в директорию DataparkSearch /etc, скопируйте indexer.conf-dist в indexer.conf и отредактируйте последний.

Для конфигурирования CGI-программы поиска (search.cgi и/или search.php3, или другой), Вы должны в директории DataparkSearch /etc скопировать файл search.htm-dist в search.htm и отредактировать последний. См. Разд. 8.3 для подробного описания.

3.1.2. Запуск indexer

Просто запускайте indexer раз в неделю (в день, в час, ...) для обновления информации о Ваших серверах и страницах. Вы можете также вставить запуск indexer в Ваш файл заданий crontab.

По умолчанию, indexer, вызванный без всяких параметров командной строки, переиндекирует, только устаревшие документы. Вы можете задать период "старения" при помощи команды Period в indexer.conf. Если Вам необходимо переиндекировать все документы, независимо от того, устарели они или нет, используйте ключ -a. indexer при запуске пометит все документы как устаревшие.

Запрашивая документы, indexer посылает HTTP заголовок If-Modified-Since для документов уже находящихся в базе. Когда indexer получает очередной документ, он вычисляет контрольную сумму документа, если она совпадает со старой контрольной суммой, хранящейся в базе данных, докумен заново не разбирается (считается неизменённым) Ключ indexerа -m заставляет разбирать заново каждый документ, независимо от того, измён он или нет. Это может быть полезным, например, когда меняются правила Allow/Disallow в indexer.conf и необходимо добавить новые страницы, которые раньше были запрещены к обработке.

Если на запрос документа DataparkSearch получает HTTP-статусы переадресации 301,302,303, он попытается проиндексировать URL, указанный в заголовке Location: ответа сервера.

3.1.3. Создание SQL-таблиц

Для создание SQL-таблиц, необходимых для работы DataparkSearch, используйте indexer -Ecreate. При запуске с таким аргументом, indexer ищет файл, содержащий SQL-выражения, необходимые для создания всех таблиц, учитывая тип базы данных и режим хранения, указанные в команде DBAddr в indexer.conf. Поиск файлов производится в каталоге /share инсталляции DataparkSearch, т.е. обычно в /usr/local/dpsearch/share/.

3.1.4. Удаление SQL-таблиц

Для удаления SQL-таблиц, созданных DataparkSearch, используйте indexer -Edrop. Поиск файл с запросами для удаления таблиц производится в каталоге /share инсталляции DataparkSearch.

3.1.5. Управление подсекциями

indexer имеет ключи -t, -g, -u, -s, -y для ограничения работы только с чатью базы ссылок. -t соответсвует ограничению по тэгу, -g соответсвует ограничению по категории, -u - ограничение по части URL (поддерживаются шаблоны SQL LIKE с символами % и _), -s - ограничение по HTTP статусу документа, -y - ограничения по Content-Type. Все ограничения для одного и того же ключа объединяются опрератором ИЛИ, а группы разных ключей - оператором И.

3.1.6. Как очистить базу данных

Чтобы очистить всю базу данных, используйте команду indexer -C. Вы можете также удалить тольеко часть базы, используя ключи указания подсекций -t,-g,-u,-s,-y.

3.1.7. Статистика базы данных

Если Вы запустите indexer -S, Вы получите статистику базы данных включающую общее число документов, и число устаревших документов для каждого статуса. Ключи указания подсекций также действуют для этой команды.

Значения кода статуса:

  • 0 - новый (еще ни разу не индексированный) документ

Если статус не 0, он равен коду HTTP ответа, некоторые коды ответов HTTP:

  • 200 - "OK" (url успешно проиндексирован)

  • 301 - "Moved Permanently" (переадресован на другой URL)

  • 302 - "Moved Temporarily" (переадресован на другой URL)

  • 303 - "See Other" (переадресован на другой URL)

  • 304 - "Not modified" (url не модифицирован со времени предыдущего индексирования)

  • 401 - "Authorization required" (нужен login/password для этого документа)

  • 403 - "Forbidden" (нет доступа к этому документу)

  • 404 - "Not found" (указаный документ не существует)

  • 500 - "Internal Server Error" (ошибка в cgi, и т.д.)

  • 503 - "Service Unavailable" (Хост недоступен, таймайт соединения)

  • 504 - "Gateway Timeout" (таймаут при получении документа)

Код ответа HTTP 401 обозначает, что документ защищён паролем. Вы можете использовать команду AuthBasic в indexer.conf для указания login:password для URL.

Код ответа HTTP 404 означает, что на одной из Ваших страниц есть ссылка на несуществующий документ, или есть ошибка в указании URL..

Смотрите документацию по HTTP для подробного объяснения различных кодов ответа HTTP.

3.1.8. Проверка ссылок

Будучи запущенным с ключом -I, indexer показывает пары URL и страница, ссылающаяся на него. Это полезно для поиска битых ссылок на Ваших страницах. Вы также можете использовать ключи ограничений подсекций для этого режима. Например, indexer -I -s 404 покажет адреса всех ненайденных ('Not found') документов вместе с адресами страницами, содержащими ссылки на эти документы. Таким образом Вы можете использовать DataparkSearch для проверки ссылок на Вашем сайте.

3.1.9. Параллельное индекирование

Пользователи MySQL и PostgreSQL могут запускать несколько indexer одновременно с одним и тем же файлом конфигурации indexer.conf. Мы успешно опробовали 30 одновременно работающих indexer использующих базу данных MySQL. Indexer использует механизм блокировки MySQL и PostgreSQL для избежания двойного индексирования одних и тех же документов разными одновременно работающими indexer. Параллельное индексирование может работать некорректно с остальными поддерживаемыми SQL серверами. Вы можете использовать многопоточную версию indexer c любым SQL сервером, поддерживающим параллельные соединения с базой. Многопоточная версия использует свой собственный механизм блокировки.

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

С другой стороны, Вы можете запускать несколько indexer c различными файлами конфигурации и различными базами для любого поддерживаемого SQL сервера.