FLUIdS
Шаблоны

  • Что такое шаблон
  • Где применяются шаблоны
  • Описание шаблонов
  • Экранирование символов

  • Что такое шаблон

    Шаблон - это символьная строка, в которой могут присутствовать символы со специальным значением, называемые метасимволами. Шаблон используется для сравнения с другими строками, например, с именами файлов или директорий, к индексации которых готова приступить программа flindex. От результата такого сравнения будет зависеть, проиндексирует их FLUIdS или нет.

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


    Где применяются шаблоны

    В поисковой системе FLUIdS шаблоны применяются главным образом в двух местах: в директивах конфигурационных файлов и в качестве аргументов вызова дополнительных утилит. Ниже представлен список всех директив конфигурационных файлов (индексации и CGI модуля), в которых используются шаблоны:

    Имя
    директивы
    Конфигурационный
    блок
    Смысл директивы Конфигурационный
    файл
    ctype job или default задает правила определения типа индексируемого файла индексации
    charset job или default задают кодировку индексируемого файла индексации
    IgnoreFileName job или default задает укороченные имена неиндексируемых файлов индексации
    IgnoreFullPathFile job или default задает полные имена неиндексируемых файлов индексации
    IgnoreDirName job или default задает полные имена неиндексируемых директорий индексации
    IgnoreDirWithFile job или default задает укороченные имена файлов, которые индексируемая директория не может содержать индексации
    RejectWords words определяет неиндексируемые слова индексации
    allow, disallow index определяют IP адреса или имена станций Интернет, с которых разрешен или запрещен доступ к данному индексу CGI модуля
    koi, win, alt, iso, sco и mac user-agent позволяют определить кодировку пользователя по используемому браузеру CGI модуля
    icon templates задает иконки, отвечающие результатам поиска CGI модуля


    Описание шаблонов

    В FLUIdS определяются четыре разновидности метасимволов - *, ?, [] и {}. Каждый метасимвол шаблона должен соответствовать некоторому набору символов из сравниваемой строки. Если такое соответствие установлено, то сравнение считается удачным. Ниже в таблице описываются метасимволы и соответствующие им наборы символов из сравниваемой строки:

    * означает произвольное число символов, в том числе и нулевое. Например, шаблон /usr/www/* будет соответствовать всем файлам (или директориям), чьи имена начинаются с /usr/www/, а шаблон *.htm - всем файлам с расширением htm.
    ? задает один произвольный символ. Например, шаблон movie.mp? сравнивается с movie.mpg и с movie.mp3, но не сравнивается с movie.mpeg.
    [...] означает один символ из перечисленных в скобках. Например, [aAbBcC] задает один из символов 'a', 'A', 'b', 'B', 'c' и 'C'.
    Замечание:  этот метасимвол имеет расширенный синтаксис, смотрите ниже.
    {...} соответствует произвольному числу символов из перечисленных в скобках (в том числе и нулевому). Например, шаблон {abc} будет сравниваться со строками, состоящими только из символов 'a', 'b' и 'c', или с пустой строкой.
    Замечание:  этот метасимвол имеет расширенный синтаксис, смотрите ниже.

    Введенные выше скобочные метасимволы (т.е. [...] и {...}) имеют расширенный синтаксис:

  • Если в скобках пара символов разделена знаком минус '-', то ей соответствует любой символ из указанного диапазона. Например:
  • [a-z] означает строчную букву английского алфавита;
    [a-zA-Z]{0-9a-zA-Z} соответствует строке не короче одного символа, причем первый символ строки должен быть буквой, а остальные (если они есть) - либо буквы, либо цифры.
    Если символ '-' стоит сразу после открывающей скобки или непосредственно перед закрывающей, то он лишается своего специального значения:
    [az-] соответствует ровно одному символу из 'a', 'z' и '-'.

  • Если сразу за открывающей скобкой стоит соответствующая ей закрывающая, то последняя считается символом из набора, например:
  • []xyz] - любой символ из ']', 'x', 'y' и 'z';
    {} - ошибочный шаблон, т.к. для открывающей скобки отсутствует закрывающая (символ '}' здесь признается сравниваемым, а не метасимволом).

  • Если символ '^' является первым из перечисленных в скобках, то метасимволу ставятся в соответствие символы, не входящие в число перечисленных в скобках. Например:
  • шаблон [^ab] сравнивается с c, но не сравнивается с b или a;
    шаблон {^a-zA-Z} сравнивается с .012, но не сравнивается с 012.c или 012.htm;
    {^/}.htm означает имя файла без префикса пути и с расширением htm.

  • Если сразу за '^' следует закрывающая скобка, то она будет рассматриваться как сравниваемый символ, а не как метасимвол. Например:
  • шаблон [^] будет считаться ошибочным, а [^]] - верным и означающим один (любой) символ, отличный от ']'.

  • Внутри скобок символы '?' и '*' теряют свой специальный смысл, а экранирование возможно:
  • {?\\\}} означает любую последовательность символов (в том числе и пустую), состоящую только из знаков вопросов, обратных косых черт и закрывающих фигурных скобок.

  • Последовательности символов '\n', '\r' и '\t' (т.е. экранираванные символы 'n', 'r' и 't') внутри скобок означают соответственно "перевод строки", "возврат каретки" и "табуляцию".
  • Если в шаблоне со скобочным метасимволом отсутствует его закрывающая скобка, то шаблон признается ошибочным, а любое его сравнение со строкой - неудачным.

    Замечание 1: при сравнениях шаблонов и имен файлов символы / и . в именах файлов (т.е. символ-разделитель имен поддиректорий и символ, ответственный за выделение расширения из имени файла) считаются обычными символами (в конфигурационных файлах Web сервера Apache это не совсем так).
    Замечание 2: если в файловой системе символ-разделитель - обратная косая черта (DOS или MS Windows), то при записи шаблона его надо заэкранировать (получается как бы удвоение этого символа).

    В среде UNIX давно используются метасимволы *, ? и []. Для большей гибкости в FLUIdS к ним добавлен {}.


    Экранирование символов

    Если есть необходимость задания в шаблоне обычного символа, совпадающего по написанию с метасимволом, то его нужно заэкранировать. Это делается путем вставки перед ним символа \ (обратная косая черта). Это, кстати, относится и к самому символу \ :

    c:\\my\ docs\\who\?.*

    В этом шаблоне \ экранирует сам себя, пробел и знак вопроса.

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

    IgnoreFileNames "*\"*"

    будет означать запрет на индексацию файлов, чьи имена содержат ".


    На предыдущую страницу valera@sbnet.ru