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