ВебмастерМетрикаВиджетыРекламная сетьДиректПоиск для сайтаAPI
Войти

Руководство по установке и эксплуатации

В формате PDF

Конфигурация XML-парсера

Конфигурационный файл XML-парсера

Пример

<XmlParser>
    <DOCTYPE>
        LocalDTD : ...
        <Zones>
            zonename : zone1,zone2, ...
            ...
        </Zones>
        <Attributes>
            attrname : attr1,attr2, ...
            ...
        </Attributes>
        <TextFlags>
            ...
        </TextFlags>
    </DOCTYPE>
</XmlParser>

Проектирование конфигурации XML-парсера

В процессе разработки конфигурации XML-парсера рекомендуется придерживаться тех же основных шагов, что подробно описаны в разделе Проектирование конфигурации HTML-парсера:

  1. Определить имена поисковых зон и поисковых атрибутов, которые будут участвовать в языке запросов.
  2. Для каждой поисковой зоны указать список имен XML-элементов, содержимое которых должно принадлежать данной поисковой зоне. Определить, будут ли некоторые поисковые зоны условными.
  3. Для каждого поискового атрибута выбрать его тип и список пар (имя XML-элемента, имя XML-атрибута этого элемента), определяющих атрибут.
  4. Дополнительно для каждого XML-элемента можно определить способ обработки текста - границы слов и абзацев, способ обработки пробелов и вес слов.

Синтаксис конфигурационного файла

Описание дополнительных настроек XML-парсера размещается в отдельном файле. При этом в секции DocFormat конфигурационного файла индексатора нужно задать путь к файлу конфигурации парсера (путь к файлу указывается через директиву Config). Вся конфигурация парсера должна быть размещена внутри секции <XmlParser>. Эта секция включает одну или несколько подсекций <DOCTYPE>, каждая из которых определяет конфигурацию, относящуюся к заданному типу XML-документов и включает, в свою очередь, подсекции <Zones>, <Attributes> и <TextFlags>.

Определение типов XML-документов

Правила интерпретации каждого типа XML-документов описываются в отдельной секции <DOCTYPE>. Каждая такая секция может иметь атрибуты public, system и root. Анализ значений этих атрибутов позволяет установить соответствие между данным XML-документом и нужными настройками парсера.

Сначала анализируется атрибут public, который, в случае своего наличия, содержит подстроку, содержащуюся в значении одноименного атрибута элемента <DOCTYPE> XML-документа. Если соответствие не найдено, аналогичный анализ проводится для атрибутов system. Если соответствие опять не найдено (это может случиться, в частности, если элемент <DOCTYPE> отсутствует в XML-документе), сравнивается значение атрибута root секции <DOCTYPE> конфигурационного файла и имени корневого элемента XML-документа.

Если ни одна из секций <DOCTYPE> конфигурационного файла, имеющая атрибуты, не соответствует XML-документу, будет использована конфигурация, описанная в секции без атрибутов.

Если секция <DOCTYPE> без атрибутов отсутствует, будет использована конфигурация, описанная в разделе Конфигурация по умолчанию.

Директивы секции <DOCTYPE>

LocalDTD - необязательная директива. Определяет локальный файл DTD, который будет использоваться парсером вместо внешнего, в случае, если он указан в элементе <DOCTYPE> XML-документа.

Конфигурирование поисковых зон

Пример

Формальные правила описания зон можно представить следующим набором выражений:

<Zones>
    yzone : xelem(,xelem)*
    yzone : xelem(,xelem)*/yattr
</Zones>

где:

  • yzone - имя поисковой зоны;
  • xelem - имя XML-элемента;
  • yattr - имя поискового атрибута, определяющего условную поисковую зону;
  • (...)* - ноль, один или несколько элементов.

Имя поисковой зоны не может совпадать с одним из зарезервированных имен "doc", "empty", "any".

Вместо имени XML-элемента допустимо использовать символ "_" (подчеркивание), который означает любой XML-элемент. Если символ "_" употреблен вместо имени поисковой зоны, это значит, что имя поисковой зоны совпадает с именем XML-элемента.

Конфигурирование поисковых атрибутов

Пример

Формальные правила описания поисковых атрибутов можно представить следующим набором выражений:

<Attributes>
    yattr : TYPE/xelem.xattr(,xelem.xattr)*
    yattr : TYPE,yzone/xelem.xattr(,xelem.xattr)*
    yattr : TYPE,yzone,function/xelem.xattr(,xelem.xattr)*
    yattr : TYPE,yzone,function,ignore/xelem.xattr(,xelem.xattr)*
</Attributes>

где:

  • yzone - имя поисковой зоны, как описано в разделе Конфигурация HTML-парсера;
  • yattr - имя поискового атрибута;
  • xelem - имя XML-элемента;
  • xattr - имя XML-атрибута;
  • (...)* - ноль, один или несколько элементов;
  • TYPE - тип поискового атрибута, как описано в разделе Типы поисковых атрибутов;
  • function - одно из строковых значений, описанных в разделе Конфигурация HTML-парсера и определяющих правила распознавания текста атрибута;
  • ignore - флажок, указывающий, что документный атрибут надо распознавать, но не надо запоминать его в индексных файлах. Используется для создания группировочных атрибутов.

Символ "_" (подчеркивание) вместо имени XML-элемента или XML-атрибута обозначает любой элемент или атрибут. Если символ "_" задан вместо имени поискового атрибута, имя поискового атрибута будет совпадать с именем XML-атрибута.

Конфигурирование правил обработки текста

Пример

Формальные правила обработки текста можно представить следующим набором выражений:

<TextFlags>
    ybreak : (xelem)*(, xelem.xattr)*(, xelem.xattr.xval)*
</TextFlags>

где:

  • ybreak - один из флагов обработки текста, перечисленных ниже;
  • xelem - имя XML-элемента;
  • xattr - имя XML-атрибута;
  • xval - значение XML-атрибута;
  • (...)* - ноль, один или несколько элементов.

Символ "_" (подчеркивание) вместо имени XML-элемента обозначает любой элемент.

Флажки обработки текста

Флаги Описание Значение

BREAK_NONE,

BREAK_WORD,

BREAK_SENTENCE,

BREAK_PARAGRAPH

Определяет, будет ли текст внутри XML-элемента отделен границами слова, предложения или абзаца в дополнение к обычным пунктуационным правилам. Значение по умолчанию: BREAK_NONE.

SPACE_DEFAULT,

SPACE_PRESERVE

Определяет, значимы ли пробельные символы в тексте внутри XML-элемента. Значение по умолчанию: SPACE_DEFAULT.

WEIGHT_ZERO,

WEIGHT_LOW,

WEIGHT_NORMAL,

WEIGHT_HIGH,

WEIGHT_BEST

Определяет относительный вес слов в тексте внутри XML-элемента.

В случае значения WEIGHT_ZERO текст проиндексирован не будет.

Значение по умолчанию: WEIGHT_NORMAL.
Важно
Чтобы у найденного документа было определено свойство "заголовок документа", необходимо, чтобы в настройках парсера была определена зона title с флагом обработки текста BREAK_PARAGRAPH и документ содержал не менее одного предложения в этой зоне.

Конфигурация по умолчанию

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

Пример

<XmlParser>
    <DOCTYPE>
        <Zones>
           # все XML-элементы образуют поисковые зоны с таким же именем
           _ : _
        </Zones>
        <Attributes>
           # для всех зон все XML-атрибуты соответствующих элементов образуют поисковые зонные атрибуты
           # с таким же именем, как имя XML-атрибута и типом TEXT
           _ : TEXT,any/_._
        </Attributes>
        <TextFlags>
           # все XML-элементы независимо от XML-атрибутов и их значений разбивают текст на абзацы
           BREAK_PARAGRAPH : _._
        </TextFlags>
    </DOCTYPE>
</XmlParser>

Пример конфигурации XML-парсера

Индексирование WAP-ресурсов

Ниже приведен пример секции <DOCTYPE>, которая может быть использована при индексировании WML-документов (см. http://www.wapforum.org/DTD/wml12.dtd).

Пример

<DOCTYPE public="DTD WML 1.2">
    LocalDTD : wml12.dtd
    <Zones>
        anchor : anchor,a,go,card,option/link
    </Zones>
    <Attributes>
        link : URL,anchor/_.href,card.ontimer,card.onenterforward,card.onenterbackward,option.onpick
        title : TEXT,doc/card.title
    </Attributes>
    <TextFlags>
        BREAK_PARAGRAPH : br,table,tr,td
    </TextFlags>
</DOCTYPE>