Конфигурирование поисковых атрибутов
Формальные правила описания поисковых атрибутов можно представить следующим набором выражений: <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 то текст внутрисайтовых и музыкальных ссылок в эту зону не попадет.