В секции необходимо определить имя файла, в который будут записываться результаты индексирования, например, так:
IndexLog indexer.log
Также должен быть определен каталог, где будут размещаться индексные файлы. Если этот каталог отсутствует, при выполнении индексирования он будет создан. Если же такой каталог уже существует, и в нем находятся индексные файлы, созданные при предыдущем индексировании, они будут учтены при построении нового индекса. В какой мере они будут учитываться, определяется дополнительными директивами конфигурационного файла.
Вы, наверно, помните, что "большой" Яндекс индексирует не все слова, найденные в документах. Существует определенный набор стоп-слов, которые игнорируются в процессе обработки. Рассматриваемая программа также может учитывать стоп-слова, не подлежащие индексированию. Этот список входит в состав поставки в виде файла, который вы можете самостоятельно редактировать. При этом необходимо учитывать лишь то, что текст в нем должен быть набран в кодировке Windows-1251. Директива, определяющая имя файла, называется stopWordFiie.
На Яндексе при просмотре результатов поиска для найденных документов присутствует ссылка Сохраненная копия, позволяющая посмотреть документ даже в том случае, если он удален с сайта. Аналогичная возможность есть и в программе Яndex.Server. Режим сохранения документов (без элементов форматирования) задается директивой storeArchive, используемой по умолчанию. Если вы не отказываетесь от использования этой опции, помните, что в этом случае архив сохраненных документов (текстов) может иметь размер до 30–40 % от общего объема проиндексированных документов.
Следующая интересная директива управляет режимом индексирования с учетом точных словоформ. Задание этого ключа ведет к добавлению в индекс информации о точных формах встречающихся в документах слов, что позволяет в языке запросов использовать оператор! поиска по точной словоформе.
При этом размер индекса увеличивается примерно в 2 раза. (В последней версии программы точные словоформы учитываются всегда.)
Примечание
К примеру, при использовании словоформ при поиске слова иди в результаты попали различные формы этого слова, такие как "иду", "идем", "шли", "идущий", "идет" и др. Если бы параметр задан не был, нашлись бы только точно совпадающие с искомым слова.
На начальном этапе настройки с помощью директивы Debug можно задать режим получения отладочной информации.
Области индексирования
Для того чтобы поисковый сервер знал, где находятся документы, подлежащие индексированию, в конфигурационном файле описывается область индексирования — множество документов, которые индексируются с единым набором параметров. Например, каждый внешний источник данных соответствует одной отдельной области индексирования. Одной области индексирования принадлежат и все документы, путь к которым задан префиксом URL.
Область индексирования определяется секцией IndexedArea. В одном конфигурационном файле таких секций может быть несколько.
Существует три способа получения данных для индексирования:
□ чтение файлов, доступных в локальной сети, где работает индексатор, с использованием протоколов операционной системы;
□ обращение к веб-серверам по протоколу HTTP;
□ обращение к произвольному внешнему источнику данных по специальному протоколу, реализованному в модуле связи с источником данных.
Если URL получен чтением файлового каталога, содержимое документа может быть получено как чтением файла, так и по протоколу http — в зависимости от настроек. Если URL получен в результате распознавания гипертекстовой ссылки, содержимое документа может быть получено по протоколу HTTP. С помощью чтения локального файла содержимое документа можно получить, только если соответствующий веб-хост принадлежит локальной сети, и в настройках индексатора указаны нужные пути. Если содержимое документа может быть получено только по протоколу HTTP, документ считается принадлежащим внешнему хосту. Индексатор может проиндексировать только те внешние хосты, которые явно указаны в настройках.
Способ доступа к данным для каждой секции indexedArea определяется единственным образом и должен включать одну из возможных директив. Директива HttpPrefix определяет доступ по HTTP-протоколу, директива FilePrefix определяет путь к разделу в локальной сети.
Но можно обойтись и без этих директив, если список начальных адресов (URL) будет в явном виде задан в ключе StartUrls, например, так:
StartUrls = http://localhost/my_site/index.htm
Помимо пути доступа, для каждой области индексирования прописываются режим получения URL документа, режим получения содержимого документа, включая конфигурацию HTTP-заголовков и прокси-серверов для документов, получаемых по HTTP-протоколу, режим обновления индекса, кодировка символов, используемая в документах, набор атрибутов, значения которых можно использовать, к примеру, в качестве критериев поиска.
Например, для определения режима получения URL документа применяются такие директивы:
□ IndexFollow — индексирует документы и распознает гипертекстовые ссылки для получения URL новых документов;
□ IndexNofollow — позволяет индексировать документы, но не распознает гипертекстовые ссылки для получения URL новых документов;
□ NoindexFollow — если директива включена в конфигурационный файл, то индексатор не будет индексировать документы, а вот ссылки на новые документы, находящиеся в них, будет использовать для получения URL новых документов.
Поисковый сервер и защита от роботов
А вот еще одна интересная особенность продукта, в какой-то мере раскрывающая и работу "пауков" большого Яндекса. Веб-страницы могут содержать специальный мета-тег robots. Этот мета-тег имеет более высокий приоритет, чем настройки индексатора или директивы управления, заданные в файле robots.txt. То есть если директивы управления в файле robots.txt разрешают индексировать все файлы в каталоге, то блокирующий мета-тег <meta name="robots" content="noindex, nofollow"> может запретить индексирование страницы, находящейся в этом каталоге.
По умолчанию Яndex.Server учитывает содержимое этого мета-тега, что позволяет запретить роботу индексировать какую-то страницу или следовать по ссылкам, содержащимся на ней. Но директивы, входящие в состав конфигурационного файла, могут как разрешить, так и игнорировать значения тега:
□ AllowMetaRobots — учитывает при индексировании содержимое метатега robots;
□ IgnoreMetaRobots — игнорирует содержимое мета-тега.
При индексировании документов по протоколу HTTP Яndex.Server поддерживает стандарт исключений для роботов. В соответствии с этим стандартом, правила, управляющие поведением поискового робота, должны располагаться в файле /robots.txt, лежащем в корне веб-сервера. Но и здесь есть обходные маневры (впрочем, обходные лишь для вас, поскольку на свой веб-сервер этот поисковик вы будете устанавливать сами, и сами будете определять, что включать в состав индексируемых документов, а что не включать). Пример конфигурации HTTP-запросов при индексировании хоста приведен в листинге 10.2.
Листинг 10.2. Пример конфигурации HTTP-запросов при индексировании хоста
<HttpOptions name="myhttp">
Timeout: 150 Delay: 0
ProxyUrl: http://proxy.my_site.ru:8080 <Authorization>
UserName: my_site UserPassword: abf12345 </Authorization>
<Headers>
User-Agent: MyYandexServer/3.0 From: [email protected] Accept-Language: ru, *;q=0.1 MyHeader: TestStroka </Headers>
</HttpOptions>
Если вам нужно, чтобы Яndex.Server при индексировании вашего сайта не учитывал общие правила для поисковых роботов, модифицируйте файл robots.txt, добавив специальное правило для User-Agent, заданного при конфигурировании HTTP-запросов. В следующем примере (листинг 10.3) каталог скриптов закрывается от всех роботов, кроме робота MyYandexServer, которому открыто все.