5.5. Парсеры документных форматов

5.5.1. Форматы документов, зоны и атрибуты

5.5.1.1. Понятие парсера

Индексатор, используемый в Яndex.Server 3.4, разработан так, чтобы индексировать документы произвольного формата. С этой целью чтение документа и интерпретация его формата осуществляется с помощью отдельных модулей, по одному модулю на каждый формат документа. Эти интерпретирующие формат модули в дальнейшем называются парсерами.

В состав стандартной поставки Яndex.Server 3.4 входят парсеры форматов text/html и text/plain, в настоящее время доступны также парсеры форматов XML, RTF, PDF, MP3, FLASH, MS Word, MS Excel, MS PowerPoint. Кроме того, доступна спецификация интерфейса, которая позволяет независимым производителям разработать нужные парсеры.

5.5.1.2. Структура документа

Каждый документ имеет внутреннюю структуру - деление на параграфы, абзацы, заголовки и т.п. Например, формат электронного письма подразумевает наличие в нем полей from, to, служебных областей, поля сообщения и т.п. Документы принятого в интернете формата HTML также имеют внутреннюю структуру - заголовок, тело документа, ключевые слова. В теле могут присутствовать заголовки различных уровней, ссылки, картинки и т.д. Различные части структурированых таким образом документов будем называть зонами.

Каждая зона может иметь одно или несколько скрытых свойств, не связанных непосредственно с ее текстом. Например, зона to в электронном письме могла бы иметь свойство количество адресов рассылки, а зона ссылка на другой документ в HTML-документе имеет свойство URL документа. Такие свойства зон будем называть атрибутами.

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

5.5.1.3. Поисковые зоны и атрибуты

Документ размечается на зоны во время индексирования, в соответствии с метками, возвращаемыми парсером. Каждая зона получает уникальное имя (текстовую строку), используемое в языке запросов, и может быть предметом поиска независимо от других зон. Мы будем называть эти размеченные области документа поисковыми зонами. Каждая поисковая зона имеет точки начала и конца в теле документа. Начало и конец зон всегда приходятся на границы слов. Разные зоны могут быть вложены друг в друга.

Свойства (атрибуты) зон также могут быть помечены в качестве независимых объектов поиска. Такие свойства зон будем называть поисковыми атрибутами, или просто атрибутами. Каждый атрибут имеет уникальное имя (текстовую строку), и значение, которое может быть различного типа, в зависимости от способа его обработки при индексировании. Зона, в общем случае, может иметь произвольное число атрибутов. Каждый атрибут может иметь несколько различных значений. Разумеется, не все атрибуты, определенные в данном массиве документов, должны быть определены для данной зоны. Язык запросов Яндекса позволяет искать в нужной зоне с нужным значением атрибута. Значения атрибутов назначаются зонам во время индексирования, в соответствии с метками, возвращаемыми парсером, и хранятся в том же индексном файле, что и слова, встречающиеся в документе.

Существуют два важных частных случая зон - документ как целое и зона нулевой длины. Атрибуты документа как целого называются документными атрибутами. Примерами документных атрибутов являются размер документа, его автор, дата создания или принадлежность к определенному разделу сайта. Поиск по таким атрибутам является важным частным случаем зонно-атрибутивного поиска. Назначение документных атрибутов возможно не только во время индексирования, как для других зон, но и дополнительно, в конфигурационном файле индексатора (см. подраздел Набор атрибутов документа раздела Директива Options главы Ключи конфигурационного файла индексатора).

Зона нулевой длины введена для того, чтобы иметь возможность назначить атрибуты определенной точке внутри документа. Это может быть полезным в случае, когда документ имеет "вложенные потоки", отличающиеся форматом или медиа-типом и не индексируемые с помощью основного парсера. Например, у картинок в HTML-документе может быть всплывающий сверху текст - параметр alt тега <img>. Этот текст - свойство (атрибут) точки документа, в которой расположена картинка.

Пример 5-4. Документные атрибуты

Рассмотрим массив из двух документов, включающих литературные произведения. Каждый из них имеет документный атрибут datecreated, имеющий значение даты написания произведения его автором. Первый документ имеет атрибут author со значением Pushkin, а у второго документа этот атрибут имеет два значения - Shecly и Zelazny, так как произведение написано в соавторстве. Наконец, у первого документа имеется атрибут in_meter со значением iambus, а у второго документа этот атрибут отсутствует.

5.5.1.4. Типы атрибутов

По способам распознавания и обработки различаются следующие типы атрибутов:

  • Значение атрибута распознается как текст, состоящий из последовательности слов, каждое слово обрабатывается с учетом морфологии и участвует по-отдельности в индексировании и поиске. Такие атрибуты будут называться атрибутами типа TEXT.

  • Значение атрибута распознается как неделимая последовательность символов, участвующая в индексировании и поиске как целое. Правила морфологии к такой последовательности не применяются. Такие атрибуты будут называться атрибутами типа LITERAL. Для данного типа атрибутов возможен поиск в интервале значений, с учетом лексикографического сравнения.

  • Значение атрибута распознается как дата или время. Такие атрибуты будут называться атрибутами типа DATE.

  • Значение атрибута распознается как Uniform Resource Locator. Такие атрибуты будут называться атрибутами типа URL.

  • Значение атрибута распознается как целое число. Такие атрибуты будут называться атрибутами типа INTEGER.

Пример 5-5. Типы атрибутов

Некоторый документ имеет атрибут abstract типа TEXT со значением "A general formula is derived for the main gravitomagnetic clock effect in the case of slow motion along an arbitrary elliptical orbit in the exterior field of a slowly rotating mass", атрибут field типа LITERAL со значением "General Relativity and Quantum Cosmology", атрибут publication_date типа DATE со значением "12 Oct 2001 00:00:02 GMT" и атрибут gr-qc типа LITERAL со значением 0110055, идентифицирующий этот документ в международной базе научных публикаций xxx.lanl.gov.

5.5.1.5. Конфигурирование зон и атрибутов

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

Конфигурация зон и атрибутов, встроенная в парсеры по умолчанию, достаточна для подавляющего большинства случаев. Однако если необходимо работать с какими-либо специфическими данными, содержащимися в документах, можно изменить эту конфигурацию, описав новое поведение в конфигурационном файле соответствующего парсера. Для этого в секциях DocFormat конфигурационного файла индексатора нужно задать файл конфигурации парсера соответствующего формата. После этого нужно отредактировать конфигурацию парсера в соответствии с его документацией. Настройка парсера формата HTML описана в разделе Конфигурация HTML-парсера, а настройка парсера формата XML описана в разделе Конфигурация XML-парсера.

5.5.1.6. Особые названия зон и атрибутов

Ряд документных атрибутов попадают в индекс независимо от настроек парсеров и не требуют никаких действий по их описанию. К таким атрибутам относятся дата последнего изменения файла с документом (date), дата последнего переиндексирования документа (idate) и некоторые другие.

Механизм индексирования с получением новых ссылок из ранее проиндексированных документов ("сетевой паук") работает, только если определены атрибуты link, и в качестве ссылок используются значения этих атрибутов.

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

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

5.5.2. Конфигурация HTML-парсера

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

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

  • Определить имена поисковых зон и поисковых атрибутов, которые будут участвовать в языке запросов.

    Пример: Для поиска по подзаголовкам документов введем поисковую зону header. Для поиска по тексту ссылок на другие документы введем поисковую зону anchor. Для поиска по адресам ссылок на другие документы введем поисковый атрибут link.

  • Для каждой поисковой зоны указать список имен HTML-тегов, содержимое которых должно принадлежать данной поисковой зоне.

    Пример: Определим, что поисковой зоне header принадлежит текст документа, находящийся внутри любого из тегов <h1>...</h1>, <h2>...</h2> или <h3>...</h3>.

  • Определить, будут ли некоторые поисковые зоны условными. Условными будем называть поисковые зоны, образуемые только при наличии заданного поискового атрибута. Для списка HTML-тегов, определяющего поисковую зону, может быть дополнительно указано имя некоторого поискового (не HTML!) атрибута. Если имя указано, и при попытке создать поисковую зону из содержимого данного HTML-тега эта зона не получает поискового атрибута с указанным именем (и любым значением), то поисковая зона не создается.

    Пример: Пусть поисковой зоне anchor должен принадлежать текст документа, находящийся внутри тега <a>...</a>, но только при условии, что данный текст ссылается на другой документ. Для этого данный тег должен иметь HTML-атрибут href. Поэтому определим поисковую зону anchor как условную, возникающую только при наличии поискового атрибута link, описанного в следующем примере.

  • Для каждого поискового атрибута выбрать его тип (из числа описанных в разделе Типы атрибутов) и список пар (имя HTML-тега, имя HTML-атрибута этого тега). Если у HTML-тега, имя которого совпадает с первым именем в паре имеется HTML-атрибут, имя которого совпадает со вторым именем в паре, то значение этого HTML-тега распознается как значение определяемого поискового атрибута по правилам, специфичным для указанного типа поискового атрибута.

    Пример: Определим, что поисковый атрибут link имеет тип URL и значениями этого атрибута будут значения HTML-атрибута href HTML-тега <a> и значения HTML-атрибута src HTML-тега <frame>.

Конфигурация парсера, спроектированная в примерах данного раздела, имеет следующий вид.

  <HtmlParser>
      <Zones>
          header = h1,h2,h3
          anchor = a/link
      </Zones>
      <Attributes>
          link = URL,any/a.href,frame.src
      </Attributes>
  </HtmlParser>
Формальные правила описания конфигурации приведены в следующем разделе.

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

Описание настроек HTML-парсера можно размещать как в общем конфигурационном файле, так и в отдельном файле. В любом случае в секции DocFormat конфигурационного файла индексатора нужно задать путь к файлу конфигурации парсера. Вся конфигурация парсера должна быть размещена внутри секции <HtmlParser>. Директивы, определяющие поисковые зоны, располагаются внутри подсекции <Zones>, а директивы, определяющие поисковые атрибуты - внутри подсекции <Attributes>.

Далее приводятся формальные правила написания конфигураций, и даются конкретные примеры с подробными комментариями.

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

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

  <Zones>
      yxzone = htelem (,htelem)*
      yxzone = htelem (,htelem)* /yxattr
  </Zones>
Где

yxzone - имя поисковой зоны
htelem - имя HTML-тега
yxattr - имя поискового атрибута, определяющего условную поисковую зону
(...)* - ноль, один или несколько элементов

Имя поисковой зоны не может совпадать с одним из зарезервированных имен doc, empty, any. Вместо имени HTML-тега допустимо использовать символ _ (подчеркивание). Он означает любой тег.

Пример: Текст внутри тега title принадлежит поисковой зоне title.

      title = title

Пример: Текст внутри всех элементов Hn, а также заголовки таблиц принадлежат поисковой зоне header.

      header = h1,h2,h3,h4,h5,h6,caption

Пример: Текст внутри тега a принадлежит поисковой зоне anchor только при условии, что имеется поисковый атрибут link.

      anchor = a/link

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

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

  <Attributes>
      yxattr = TYPE/htelem.htattr(,htelem.htattr)*
      yxattr = TYPE,yxzone/htelem.htattr(,htelem.htattr)*
      yxattr = TYPE,yxzone,function/htelem.htattr(,htelem.htattr)*
      yxattr = TYPE,yxzone,function,ignore/htelem.htattr(,htelem.htattr)*
      ;только для атрибутов типа URL
      yxattr = TYPE,yxzone,function,ignore,ext( ext)*/htelem.htattr(,htelem.htattr)*
      yxattr = TYPE,yxzone,function,ignore,ext( ext)*,local/htelem.htattr(,htelem.htattr)*
  </Attributes>
Где

yxzone - имя поисковой зоны
yxattr - имя поискового атрибута
htelem - имя HTML-тега
htattr - имя HTML-атрибута
(...)* - ноль, один или несколько элементов
TYPE - тип поискового атрибута, как описано в разделе Типы атрибутов
function - одно из строковых значений, указанных ниже, определяющих правила распознавания текста атрибута
ignore - флажок, указывающий, что документный атрибут надо распознавать, но не надо запоминать его в индексных файлах. Используется для создания группировочных атрибутов.
ext - список расширений имен файлов разделенных пробелами
local - флажок для пометки только локальных (внтурисайтовых) ссылок

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

Пример: Многие HTML-теги могут иметь всплывающую подсказку, заданную через HTML-атрибут title. Чтобы проиндексировать все эти атрибуты, можно определить поисковый атрибут tooltip следующим образом:

      tooltip = TEXT/_.title
Каждое из слов текста атрибута title любого HTML-тега войдет в индекс с учетом морфологии.

Особый случай представляют собой теги <META> и <LINK>. Для удобства их использования принято, что именем атрибута тега <META> является значение атрибутов NAME или HTTP-EQUIV, а значением - содержимое атрибута CONTENT. Для тега <LINK> именем атрибута считается значение атрибутов REL/REV, а значением - содержимое атрибута HREF.

Пример: Каждый документ в электронной библиотеке содержит meta-тег следующего вида:

  <meta name="author" content="_имя_автора_">
Чтобы обеспечить поиск документов, принадлежащих конкретному автору, определим поисковый атрибут author:
      author = TEXT/meta.author

Пример:

      email = URL/link.made
      _ = TEXT/meta._
      _ = URL/link._

Это означает, что будут проиндексированы все встретившиеся в документах META и LINK теги. Причем, если в LINK значение одного из его атрибутов окажется равно made, то поисковый атрибут будет иметь имя email. Во всех остальных случаях (это касается и META) будут образовываться поисковые атрибуты с именами, равными соответствующим значениям атрибутов данных тегов. Это позволяет решить проблему постоянного добавления в конфигурацию записей при каждом появлении нового, еще не описанного META или LINK тега. В настройках подобного вида приоритет имеют явно заданные имена атрибутов.

Если название поисковой зоны после типа атрибута опущено, поисковый атрибут будет документным атрибутом. Если имя поисковой зоны указано, возможны следующие случаи.

ЗначениеОписание
docэто документный атрибут, тот же самый результат получается, если имя зоны не указывать
emptyэто атрибут данной точки документа, то есть атрибут специальной зоны нулевой длины, как обсуждалось в Поисковые зоны и атрибуты
anyесли для содержимого данного HTML-элемента сформирована поисковая зона, поисковый атрибут является атрибутом этой зоны. В противном случае это атрибут данной точки документа.
другое имяесли из содержимого HTML-элемента не сформирована поисковая зона с данным именем, поисковый атрибут не создается

Пример: Для поиска картинок по именам файлов определим поисковый атрибут image:

      image = URL,empty/img.src

Аргумент function может принимать следующие значения:

ЗначениеОписание
parse_http_expiresраспознавать текст атрибута по правилам, применяемым для meta.expires
parse_http_refreshраспознавать текст атрибута по правилам, применяемым для meta.refresh
parse_http_charsetраспознавать текст атрибута по правилам, применяемым для meta.content-type
parse_meta_robotsраспознавать текст атрибута по правилам, применяемым для meta.robots
parse_data_integerраспознавать текст атрибута как дату и время и преобразовывать результат в целое число

Аргумент function может быть пропущен. В этом случае применяются правила распознавания атрибута по умолчанию, в соответствии с его типом.

Имена поисковых атрибутов типа URL могут определяться не только наличием или отсутствием соответствующих тегов и их атрибутов, но и расширениями имен файлов, составляющих значение HTML-атрибута, а также фактом, является ли ссылка локальной для данного сайта или уходит на внешние ресурсы.

Пример: Создадим дополнительные поисковые атрибуты для случаев, когда HTML-атрибут представляет собой внутрисайтовую ссылку или ссылается на музыкальный файл:

  ; По умолчанию - расширения не даны
  link = URL,anchor/a.href
  link = URL,any/frame.src,iframe.src,area.href
  
  ; В случае музыкальных расширений или внутренних ссылок меняем имя атрибута
  linkmp3 = URL,anchor,,,mp3 mpga mp2 ra/a.href
  linkint = URL,anchor,,,,local/a.href
  linkint = URL,any,,,,local/frame.src,iframe.src,area.href
Если в конфигурации зон сформирована условная зона anchor по правилу
      anchor = a/link
то текст внутрисайтовых и музыкальных ссылок в эту зону не попадет.

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

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

  <HtmlParser>
  
  <Zones>
      title = title
      address = address
      anchor = a/link
  </Zones>
  
  <Attributes>
      _ = LITERAL/meta._
      link = URL,anchor/a.href
      link = URL,any/frame.src,iframe.src,area.href
      link = URL/link._
  
      robots = LITERAL,doc,parse_meta_robots,ignore/meta.robots
      refresh = URL,doc,parse_http_refresh,ignore/meta.refresh
  
      style = URL/link.stylesheet
  
      profile = URL/head.profile
      script = URL,any/script.src
      image = URL,any/img.src
      applet = URL,any/applet.code,applet.object
      object = URL,any/object.data,object.classid
  
      abstract = TEXT/meta.description
      keywords = TEXT/meta.keywords
  
      hint = TEXT,any/img.alt,area.alt
      tooltip = TEXT,any/_.title
  </Attributes>
  
  </HtmlParser>

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

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

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

  • Определить имена поисковых зон и поисковых атрибутов, которые будут участвовать в языке запросов.

  • Для каждой поисковой зоны указать список имен XML-элементов, содержимое которых должно принадлежать данной поисковой зоне. Определить, будут ли некоторые поисковые зоны условными.

  • Для каждого поискового атрибута выбрать его тип и список пар (имя XML-элемента, имя XML-атрибута этого элемента), определяющих атрибут.

  • Дополнительно, для каждого XML-элемента можно определить способ обработки текста - границы слов и абзацев, способ обработки пробелов и вес слов.

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

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

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

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

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

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

LocalDTD

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

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

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

  <Zones>
      yzone = xelem (,xelem)*
      yzone = xelem (,xelem)* /yattr
  </Zones>
Где

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

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

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

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

  <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-атрибута.

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

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

  <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, и документ содержал не менее одного предолжения в этой зоне.

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

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

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

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

5.5.3.3.2. Индексирование 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>

Copyright © 1997 – 2005 «Яндекс»