# HTML-парсер в DataparkSearch

## Tag-парсер

Tag-парсер понимает тэги в следующей нотации:

- < ... parameter=value ... >

- < ... parameter="value" ... >

- < ... parameter='value' ... >

## Специальные символы

indexer понимает следующие специальные символы HTML:

- &lt; &gt; &amp; &nbsp; &quot;

- Все ссылки на символы, принятые в HTML-4: &auml; &uuml; и др.

- Символы с использованием Unicode: &#234;

## META-тэги

В настоящий момент HTML-парсер обрабатывает специальным образом следующие META-тэги.

Замечание: `<META "NAME">` обрабатывается так же, как и `<META "HTTP-EQUIV">`

- `<META NAME="Content-Type" Content="text/html; charset=xxxx">` Этот тэг используется для определения кодировки документа, если она не была указана в заголовке `Content-type` HTTP-ответа.

- `<META NAME="REFRESH" Content="5; URL=http://www.somewhere.com">` URL, указанный в параметре, будет поставлен в очередь на индексацию.

- `<META NAME="Keywords" Content="xxx">`

- `<META NAME="Description" Content="xxx">`

- `<META NAME="Robots" Content="xxx">`, где Content содержит список из следующий ключевых слов, разделенных запятой: `ALL, NONE, INDEX, NOINDEX, FOLLOW, NOFOLLOW, NOARCHIVE`.

- `<META NAME="DP.PopRank" Content="xxx">` где значение Content - вещественное число. Этот тэг используется для задания начального значения PopularityRank для страницы.

## Ссылки

HTML-парсер распознает гипертекстовые ссылки следующих типов:

- <A HREF="xxx">

- <IMG SRC="xxx">

- <LINK HREF="xxx">

- <FRAME SRC="xxx">

- <AREA HREF="xxx">

- <BASE HREF="xxx">

  Если <BASE HREF> содержит некорректно сформированный URL, то для формирования относительных ссылок будет использовано текущее расположение документа.

Однако вы можете указать список HTML тэгов, которые будут пропущены при поиске новых ссылок, при помощи команды `SkipHrefIn`.

    HrefSkipIn "img, link, script"

## Комментарии

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

- Текст между <!-- .... --> считается HTML-комментарием.

- Текст между тэгами <!--UdmComment--> .... <!--/UdmComment--> становится невидимым для индексации.

- Также, предусмотрено использование <NOINDEX> ... </NOINDEX> в качестве синонимов для <!--UdmComment--> и <!--/UdmComment-->

- Для совместимости с ASPSeek, <!--noindex--> ... <!--/noindex--> также являются синонимами для <!--UdmComment--> и <!--/UdmComment-->

- Специальные комментарии Google <!-- google_ad_section_start -->, <!-- google_ad_section_start(weight=ignore) --> и <!-- google_ad_section_end --> рассматриваются как тэги для включения/исключения контента из индексирования.

## Шаблоны для индексирования

Если вам нужно индексировать не всю страницу целиком, например, чтобы исключить навигацию, рекламу и т.п., вы можете использовать команду `BodyPattern` чтобы указать шаблон для извлечения контента для индексирования. Например:

    BodyPattern "<!--content-->(.*)<!--/content-->" "$1"

этот шаблон будут извлекать контент между двумя специальными комментариями, и только этот контен будет проиндексирован для этой страницы.

Вы можете задать несколько команд `BodyPattern`, но только первая по порядку подходящая будет применена к странице. Эти команды пытаются примениться к каждой индексируемой странице. Осторожно, большое число таких команд может замедлить скорость индексирования.

## Sub-documents

Поддокументами являются: содержимое фреймов и внедряемых объектов (как правило, flash-роликов), временные редиректы (зачастую используются для установки кук или перенаправления на страницу в зависимости от языка предпочтений пользователя), версии одного и того же документа на разных языках, отдаваемые с использованием Content nehotiation.

Управление индексированием поддокументов осуществляется двумя командами: команда `SubDocLevel` задает максимальный уровень вложенности индексируемых поддокументов. Значение по умолчанию равно 0, что запрещает индексирование поддокументов. Команда `SubDocCnt` задает максимальное число индексируемых поддокументов всех уровней вложенности (эта команда предназначена в основном для предотвращения бесконечных циклов вложенности страниц друг в дуга). Значение по умолчанию равно 5.