# FLUIdS
Индексация с конфигурационным файлом

При вызове программы flindex имя конфигурационного файла индексации указывается в командной строке опцией -c:

`flindex -c config`

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

Конфигурационные разделы:
  - Main
  - Defaults
  - Job
  - Words

| Раздел Main |

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

TempDir
  Задает имя директории для хранения временных файлов.

  В процессе индексации FLUIdS создает несколько временных файлов, размещаемых по умолчанию в директории /tmp (для MS Windows - в текущей директории). По ряду причин такое поведение может оказаться неудовлетворительным:
  - раздел диска, на котором находится эта директория, может не содержать достаточного дискового пространства, чтобы вместить те данные, которые программа flindex сохраняет во временных файлах;
  - нежелательно занимать место на этом разделе диска;
  - нежелательно использование общедоступной директории по соображениям безопасности.
  В таких случаях можно переопределить директорию для хранения временных файлов, задав для этой директивы подходящее значение.

  Примеры применения директивы:

  `TempDir = .`
    определяет для хранения временных файлов текущую директорию

  `TempDir = /var/fluids`
    определяет эту директорию как /var/fluids

  `TempDir = c:\\temp`
    это вариант директивы для версии под MS Windows 95/NT. В этой реализации попытка определить эту директорию как c:\ окончится неудачей: Windows не дает возможности стандартными средствами получить атрибуты драйвов. Чтобы определить корневую директорию драйва в качестве временной, используйте следующий синтаксис:
    `TempDir = c:\\.` (т.е. указывается дополнительная точка).

MaxMemoryVolum
  Определяет максимальный объем оперативной памяти (в байтах), выделяемый для индекса слов в процессе индексации. Если размер получающегося индекса слов превысит заданную величину, программа flindex сбросит данные на диск, высвобождая оперативную память для дальнейшего использования.

  Данная директива полностью эквивалентна параметру компиляции MAX_MEMORY_VOLUM и позволяет изменять его значание без повторной компиляции исходных текстов FLUIdS.

  Пример директивы:

  `MaxMemoryVolum = 20000000`

MaxSwapFiles
  Определяет максимальное число своп-файлов, используемых при индексации. Значение 0 для этой директивы означает полный запрет на применение внутреннего механизма свопинга FLUIdS. Использование сразу нескольких своп-файлов может значительно ускорить процесс индексации для больших объемов информации.

  Значение MaxSwapFiles ограничено максимальным числом одновременно открытых файлов в операционной системе.

  Данная директива полностью эквивалентна параметру компиляции MAX_SWAP_FILES и позволяет изменять его значание без повторной компиляции исходных текстов FLUIdS.

  Пример директивы:

  `MaxSwapFiles = 20`

MaxContentLength
  Директива задает максимальный размер фрагмента текста индексируемого документа (в символах), сохраняемого в индексном файле.
  Может изменяться в пределах о нуля до MAX_CONTENT_LENGTH, но в любом случае не превышать последнюю величину.

IndexFile
  Задает имя создаваемого индексного файла:

  `IndexName = my_index.flu`

  Замечание: по умолчанию используется имя, определяемое параметром компиляции DEFAULT_INDEX_FILE_NAME (в начальных установках - `index.flu`). Кроме того, оно может быть изменено при вызове flindex с помощью опции -f.

Verbose
  Определяет уровень подробности сообщаемой информации о ходе процесса индексации. Возможные значения - 0, 1, 2 и 3. Например:

  `Verbose = 3`

  Замечание: по умолчанию он задается значением параметра компиляции DEFAULT_VERBOSE_LEVEL (в начальных установках - 2). Кроме того, он может быть изменен при вызове flindex с помощью опции -v.

FollowLinks
  Определяет, нужно ли индексировать символьные связи или нет (по умолчанию это запрещено):

  `FollowLinks = True`

  (можно также использовать слова `Yes` и `On` для разрешения и слова `False`, `No` и `Off` для запрещения).

  Замечание: это значение может быть изменено при вызове flindex с помощью опции -l.

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

Для каждой из этих директив предусмотрено только одно значение, в качестве которого выступает вся строка целиком (после знака `=`).

IndexName
  задает название индекса. Это название может отличаться от имени индексного файла, оно служит для более четкой идентификации индексного файла:

  `IndexName = Primary index`

  или

  `IndexName = secondhand`

  (имя индексного файла можно поменять, название же индекса сохраняется внутри самого файла).

IndexDescription
  дает краткое описание индекса. Например:

  `IndexDescription = Main index of SbNet's site`

  или

  `IndexDescription = Этот индекс должен использоваться только для тестовых целей`

IndexPointer
  задает указатель на ресурсы Internet, охватываемые индексом (т.е. соответствующий URL). Например:

  `IndexPointer = http://www.sbnet.ru/soft/fluids/`

IndexAdmin
  задает имя администратора индекса. Может включать Email адрес. Например:

  `IndexAdmin = valera@sbnet.ru`

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

| Раздел Defaults |

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

- replace;
- ctype;
- charset;
- AccessFile;
- CharsetMethods;
- директивы Ignore`*`/Accept`*`;
- ConvertToRussian.

Данные, указываемые в этом разделе, используются в двух случаях:

1. когда объекты индексации заданы непосредственно в командной строке программы flindex;
2. когда в каком-либо разделе job отсутствуют соответствующие директивы.

Если первый случай вполне прозрачен, то второй требует некоторого разъяснения. Так, если в разделе defaults задана, например, директива replace, а в разделе job она отсутствует, то для этого раздела job будет действовать правило замены из defaults. Если же в разделе job указана хотя бы одна такая директива (пусть даже пустая, т.е. без данных), то будут применяться правила замены только из этого раздела. Иными словами, для данного конкретного раздела job действуют правила замены из этого раздела, если они там заданы, или же из раздела defaults, в противном случае. Это же касается и других правил - отбора (пять директив Ignore`*`/Accept`*`, если хотя бы одна из них задана в текущем job, то действуют только текущие правила отбора), определения типа индексируемого файла (директива ctype) и определения его кодировки (charset). Например:

         [defaults]
         replace = beginning "e:\\www\\docs" "/"
         replace = string    "\\"      "/"

         [job]
         IndexObject = e:\\www\\docs

В этом примере для индексируемых файлов из директории e:\www\docs будут действовать правила отбора, заданные в разделе defaults.

         [defaults]
         replace = beginning "e:\\www\\docs" "/"
         replace = string "\\" "/"

         [job]
         IndexObject = e:\\www\\docs
         replace = beginning "e:\\www\\docs" "http://www.mydomain.ru"
         replace = string "\\" "/"

А в этом примере правила замен из раздела defaults для индексируемых файлов из директории e:\www\docs действовать не будут.

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

`replace =`

то есть в ней после знака равенства не должно ничего указываться. Применением пустых директив можно добиться отмены действия той или иной директивы из раздела defaults в текущем разделе job.

| Раздел Job |

Этот раздел описывает задание по индексации. Таких разделов может быть несколько, и для каждого задания можно определить свои особые параметры индексации.

Раздел job использует те же директивы, что и defaults, а также директивы, явно задающие объекты индексации (сейчас такая директива одна - IndexObject).

IndexObject
  Эта директива задает список файлов и директорий, подлежащих индексации. Здесь должны быть указаны реальные файловые имена, а не шаблоны.

  Для одной директивы можно задать сразу несколько объектов индексации. Более того, Вы можете указать столько директив IndexObject, сколько нужно:

      IndexObject = /web/home/docs/  /web/users/
      IndexObject = "f:\\apache\\share\\htdocs"

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

      `IndexObject = ../docs home/ index.htm`

    - Список объектов индексации может быть заменен при вызове flindex явным перечислением в командной строке имен файлов и директорий, подлежащих индексации.

Replace
  Директивы Replace задают правила преобразования имен проиндексированных файлов в URL, используемые для доступа к этим файлам через службы Internet (обычно через Всемирную Паутину, по протоколу HTTP, но вполне возможно указание другого протокола доступа, скажем, FTP).

  Преобразованию подвергаются "расширенные" имена файлов. Под расширенностью имени файла подразумевается имя файла относительно одной из директорий (той, конечно, внутри которой он находится), указанной в директиве IndexObject (или в командной строке программы flindex). Так, например, если эта директива имеет вид

  `IndexObject = ../docs`

  то "расширенные" имена файлов будут ../docs/index.htm, ../docs/compile/flindex.htm и т.д. Если же объектом индексации является файл (а не директория), то преобразованию подвергнется его имя в том виде, в каком оно задано в директиве IndexObject (или в командной строке flindex).

  Необходимо отметить, что директивами Replace должны охватываться все имена проиндексированных файлов, чтобы в окончательном индексном файле отсутствовали непреобразованные имена файлов.

  Директивы Replace имеют жестко заданный формат, который в обобщенном виде можно представить следующим образом:

  `Replace = action initial-string final-string`

  Здесь action - задает тип преобразования, inital-string - подстрока в имени файла; если она в нем присутствует, то должна быть заменена на final-string, если же отсутствует, то имя файла не изменяется. Строка initial-string не может быть пустой, в то же время final-string может быть пустой строкой и даже отсутствовать в записи директивы. При этом использование шаблонов в директивах не предусмотрено.

  Тип преобразования action может быть одним из:

  - Beginning - изменяет начало имени файла на другое. Например:

    `Replace = beginning "../docs/" "http://www.sbnet.ru/soft/fluids/"`

    Этой директивой локальное имя файла ../docs/index/conf.htm будет превращено в полноценный URL http://www.sbnet.ru/soft/fluids/index/conf.htm.

  - Ending - изменяет конец имени файла на другое. Например:

    `Replace = ending .koi8-r ""`

    что для сайтов, хранящих русскоязычные страницы в разных кодировках, которые указываются как расширения файлов, просто скроет эту избыточную информацию. Еще пример:

    `Replace = ending /index.htm /`

  - String - заменяет все вхождения первой указанной строки на вторую. Например:

    `Replace = string % %25`

  - Prepend - приписывает впереди имени файла указанную строчку:

    `Replace = prepend http://`

  - Append - добавляет в конец имени файла указанную строчку:

    `Replace = append ?S=N`

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

  Рассмотрим такой пример конфигурационного файла:

      [job]
      IndexObject = /www/htdocs/  robots.txt
      Replace = beginning /www/htdocs/  ""
      Replace = prepend http://www.your-host.ru/

  Имена файлов из индексируемой директории /www/htdocs/ сначала усекутся на имя этой директории, а затем директивой prepend дополнятся до желаемого URL. Для индексируемого же файла robots.txt директива beginning не применяется (т.к. его имя не начинается со строчки /www/htdocs/), а директива prepend превратит его в http://www.your-host.ru/robots.txt.

Ctype
  Эта директива служит для определения типа индексируемого файла в зависимости от его имени (в особенности же от его расширения). На данный момент FLUIdS распознает три типа файлов: гипертекстовый (в формате HTML), просто текстовый (обычный текст без дополнительной разметки) и нетекстовый (т.е. бинарный: графика, звук и т.д.) Если файл не попадает в эти три категории, он не индексируется.

  Общий формат этой директивы:

  `Ctype = type шаблон1 ... шаблонN`

  Здесь type - тип файла (контента) в записи, принятой в Интернет: text/html - для гипертекстовых файлов, text/plain - для просто текстовых, и nontext - для нетекстовых. В последнем случае type может иметь любое (несовпадающее с зарезервированным) имя: `*`/`*`, undefined и т.д. Для нетекстового файла индексируется только его имя (без расширения и пути).

  В качестве значений для директивы указываются шаблоны. Например:

      Ctype = text/html *.htm *.html */.dir
      Ctype = text/plain *.txt
      Ctype = nontext *.jpg *.gif /www/icons/*

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

      IndexObject = html/   text/
      Ctype = text/html html/*
      Ctype = text/plain text/*

  то любой файл, располагающийся ниже директории html/ будет считаться гипертекстовым, а ниже text/ - просто текстовым.

  Замечания:
    - Если при вызове flindex конфигурационный файл не задан, то действуют такие правила определения типа файла, принятые по умолчанию:

    - файл гипертекстовый, если его имя подходит под шаблоны `*.htm`, `*.html`, `*.shtml`, `*.HTM`, `*.HTML`, `*.SHTML`;
    - текстовый - под шаблоны `*.txt`, `*.TXT`;
    - нетекстовый - под шаблоны `*.jpg`, `*.jpeg`, `*.gif`, `*.JPG`, `*.JPEG`, `*.GIF`.

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

      Ctype = text/html *.htm *.html *.shtml *.HTM *.HTML *.SHTML
      Ctype = text/plain *.txt *.TXT
      Ctype = nontext *.jpg *.jpeg *.gif *.JPG *.JPEG *.GIF

  Для каждого зарегистрированного типа предусмотрено специальное слово `^^FLUIdSDefault^^`, которое одно заменяет указанный набор значений, например:

  `ctype = nontext ^^FLUIdSDefault^^ *.tgz *.gz *.Z *.zip`

  что эквивалентно

  `ctype = nontext *.jpg *.jpeg *.gif *.JPG *.JPEG *.GIF *.tgz *.gz *.Z *.zip`

  - Порядок следования этих директив может быть важен, поэтому он запоминается. Сравните:

        ctype = text/html *.htm
        ctype = text/plain text/*

    с

        ctype = text/plain text/*
        ctype = text/html *.htm

    В первом случае гипертекстовыми считаются все файлы, имеющие расширение htm (даже если они находятся в директории text/). Во втором же случае гипертекстовыми будут считаться файлы с расширением htm, которые не находятся в директории text/.

  - Если исходя из значений директив Ctype не удалось определить тип индексируемого файла, то его тип будет определяться параметром компиляции DEFAULT_CONTENT_TYPE. Последний может быть задан даже как cntUnknown, что означает запрет на индексацию текущего файла.

    Однако можно определить директивы так, чтобы оставшиеся файлы всегда имели желаемый тип. Для этого достаточно в последней из директив (т.к. их последовательность важна) задать значение `"*"`, например:

        ctype = text/html ^^FLUIdSDefault^^
        ctype = text/plain ^^FLUIdSDefault^^
        ctype = - *

    При таких установках все файлы, которые не попали в разряд гипертекстовых или просто текстовых, будут считаться бинарными (и это вне зависимости от значения параметра компиляции DEFAULT_CONTENT_TYPE).

Charset
  Директивы Charset задают кодировку индексируемых файлов. Необходимость в этих директивах отпадает, если все индексируемые файлы находятся в одной кодировке, совпадающей с рабочей кодировкой FLUIdS.

  Общий формат директивы:

  `Charset = ИмяКодировки шаблон1 .... шаблонN`

  Здесь ИмяКодировки - известное системе имя кодировки. Вы можете пользоваться следующими именами:

  - koi - для кодировки koi8-r;
  - win - для кодировки windows-1251;
  - alt - для кодировки cp866;
  - iso - для кодировки ISO-8859-5;
  - sco - для кодировки ISO-8859-5 в варианте SCO UNIX;
  - mac - для кодировки Macintosh.

  В качестве значений указываются шаблоны имен файлов. (Здесь с шаблонами сравниваются "расширенные" имена файлов, см. описание директивы Replace). Порядок следования директив запоминается.

  Пример написания директив:

          charset = win  /www/docs/win/*  *.win.*
          charset = koi  /www/docs/*  *.koi8-r
          charset = alt  *

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

  Замечание: чтобы эти правила работали, необходимо, чтобы:
  - в FLUIdS была включена поддержка русского языка
  - в текущем разделе job и в разделе defaults отсутствовали директивы CharsetMethods;
  - при наличии директивы CharsetMethods в ней должен быть прописан метод ByCharsetDirective.

AccessFile
  Эта директива является некоторым дополнением к директиве charset, поскольку также позволяет определять кодировку индексируемых файлов. AccessFile задает имя файла доступа Web сервера (обычно это .htaccess), в котором прописывается кодировка локальных файлов директивой CharsetSourceEnc (если используется сервер Russian Apache).

  Пример написания директивы:

           [defaults]
           AccessFile = .htaccess
           charset = mac *

           [job]
           IndexObject = /home/www

  В этой конфигурации индексирующий модуль FLUIdS будет искать файл .htaccess во всех поддиректориях /home/www. Если такой файл будет найден, и в нем будет прописана директива CharsetSourceEnc, то кодировка всех файлов, располагающихся в этой поддиректории и ниже по файловому дереву, будет определяться именно значением директивы CharsetSourceEnc, а не директивами charset конфигурационного файла индексации.

  Замечания:
    - Необходимо отметить, что формат записи директивы CharsetSourceEnc несколько отличается от принятой в FLUIdS нотации:

      `CharsetSourceEnc koi8-r`

      то есть значение здесь не отделяется от имени директивы знаком равенства.

    - Если в текущем разделе job или в разделе defaults указывается директива CharsetMethods, то файл доступа будет использоваться, только если в ней указан метод ByAccessFile.

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

    - Совсем не обязательно в директиве AccessFile указывать имя "реального" файла доступа Web-сервера, можно указать имя любого файла, специально используемого для хранения директивы CharsetSourceEnc.

CharsetMethods
  Эта директива задает действительные методы определения кодировки индексируемого файла и порядок их применения. Можно указать следующие методы:

  - ByMetaTag - для гипертектовых файлов кодировка определяется из тега `<META HTTP-EQUIV="Content-type" CONTENT="...">`
  - ByAccessFile - кодировка определяется по директиве CharsetSourceEnc файла доступа (если он задан в директиве AccessFile)
  - ByCharsetDirective - при определении кодировки учитываются директивы charset.

  Если попытка определить кодировку согласно данному методу оказалась неудачной, то FLUIdS переходит к следующему методу. Порядок применения методов точно такой, какой прописан в директиве.

  Ситуация, когда директива CharsetMethods не применяется, полностью эквивалентна такой нотации:

           CharsetMethods = ByAccessFile ByCharsetDirective

ConvertToRussian
  Позволяет задать в индексируемых русских словах замены для английских букв на русские буквы, сходные с ними по начертанию.
  В качестве значений для этой директивы должны указываться пары букв, первая - английская, вторая - русская:

           ConvertToRussian = "pр" "HН"

  В соответствии с данной директивой все индексируемые русские слова будут проверяться на наличии в их составе английских букв, для которых задана замена. Если такая буква будет найдена, то она будет заменена на соответствующую русскую.
  Замечания:
    - Индексируемое слово будет считаться русским, если в нем встречается хотя бы одна русская буква. Так, замена 'c' на русскую 'с' не сработает для предлога "c", записанного через английскую букву 'c'.
    - Данную директиву следует использовать с осторожностью, т.к. вполне возможны ложные срабатывания на смешанных словах, нередко встречающихся в специальной литературе.
    - Слова, содержащие как русские, так и английские буквы, не будут проиндексированы, если задан параметр компиляции SINGLE_LANGUAGE_WORDS (а в начальной исталляции он задан).

  Следующие пять пар директив описывают правила отбора для индексируемых файлов и директорий. Эти правила (директивы Ignore`*`) задаются как исключающие, т.е. из всей массы индексируемых файлов и директорий исключаются из процесса индексации те, которые удовлетворяют этим правилам. (Возможно задание соответствующих директив Accept`*`, которые для подходящих файлов прекращают дальнейшую проверку на Ignore`*`.) Необходимо отметить, что сами объекты индексации, то есть файлы и директории, непосредственно указанные в директивах IndexObject или в командной строке программы flindex, не подвергаются проверке на соответствие правилам отбора.

  IgnoreFileName
    не индексировать файлы, имена которых отвечают заданным шаблонам. Например:

    `IgnoreFileName = .* htaccess htpasswd`

    что означает запрет на индексацию файлов с именами htaccess, htpasswd и файлов, чьи имена начинаются с точки (в какой бы индексируемой директории они не находились).

    Здесь под именем файла подразумевается его укороченное имя, т.е. без всякого префикса пути. Поэтому директива вида

    `IgnoreFileName = */.*`

    будет бессмысленна.

  AcceptFileName
    для файлов, имена которых отвечают заданным шаблонам, прекратить дальнейшую проверку на директивы IgnoreFileName. Например:

        AcceptFileName = .*.htm
        IgnoreFileName = .*  htaccess  htpasswd

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

  IgnoreFullPathFile
    не индексировать файлы, расширенные имена которых отвечают заданным шаблонам. Например:

    `IgnoreFillPathFile = /www/users/*.zip /www/users/*.{t}gz`

    что запрещает индексацию архивных файлов в директории /www/users/ и в любой из ее поддиректорий. Или:

    `IgnoreFillPathFile = /www/users/{^/}.zip`

    В этом случае запрет на индексацию архивных файлов касается только непосредственно директории /www/users/.

    Замечание: под "расширенностью" имени файла подразумевается имя файла относительно одной из директорий, указанной в директиве IndexObject (см. описание директивы Replace).

  AcceptFullPathFile
    для файлов, расширенные имена которых отвечают заданным шаблонам, прекратить дальнейшую проверку на директивы IgnoreFullPathFile. Например:

        AcceptFullPathFile = /www/users/{^/}.zip
        IgnoreFullPathFile = /www/users/*.zip

    Здесь не будет запрета на индексацию zip файлов, находящихся непосредственно в директории /www/users.

  IgnoreDirName
    не индексировать директории, имена которых отвечают заданным шаблонам. Например:

    `IgnoreDirName = */.* */cgi-bin /www/private ../docs/tmp`

    Замечания:
      - Если имя директории подходит под указанный шаблон, то из процесса индексации исключаются все файловое поддерево, соответствующее этой директории (т.е. все файлы, находящиеся в этой директории и в любой из ее поддиректорий).
      - В сравниваемом с шаблоном имени директории на конце отсутствует символ `/` (символ-разделитель имен поддиректорий), поэтому шаблонам вида `/www/docs/` или `*/cgi-bin/` не будет соответствовать ни одной директории. Более интересный шаблон `/www/docs/*` приведет к тому, что проиндексированы будут только файлы, находящиеся непосредственно в самой директории /www/docs/, а все ее поддиректории будут проигнорированы.
      - Имя директории здесь рассматривается как "расширенное" (см. описание директивы Replace).

  AcceptDirName
    для директорий, имена которых отвечают заданным шаблонам, прекратить дальнейшую проверку на директивы IgnoreDirName. Например:

        AcceptDirName = */cgi-bin/forum/data
        IgnoreDirName = */cgi-bin

    Здесь не будет запрета на индексацию файлов в директории */cgi-bin/forum.

  IgnoreDirWithFile
    не индексировать директорий, в которых находятся указанные файлы. В качестве значений для директивы указываются укороченные имена файлов или шаблоны для них. Например, директива

    `IgnoreDirWithFile = .htaccess .noindex`

    приведет к запрету на индексацию директорий (со всеми своим файлами и поддиректориями), если в ней обнаружится файл .htaccess или .noindex.

  AcceptDirWithFile
    разрешить индексацию директорий, в которых находятся указанные файлы. В качестве значений для директивы указываются укороченные имена файлов или шаблоны для них. Например, директивы

        AcceptDirWithFile = .indexable
        IgnoreDirWithFile = .htaccess

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

  IgnoreFileURL
    не индексировать файлы, URL'ы (интернет-адреса) которых отвечают заданным шаблонам. Например:

    `IgnoreFileURL = */{^/}.cgi*`

  AcceptFileURL
    разрешить индексацию файлов, URL'ы (интернет-адреса) которых отвечают заданным шаблонам. Например:

        AcceptFileURL = */forum.cgi*

  | Раздел Words |

  С помощью директив этого раздела конкретным индексируемым словам можно приписать особое значение.

  CommonWords
    задает статический список "часто-употребляемых" слов (стоп-слов). Такими словами обычно являются разнообразные предлоги и артикли, которыми густо усыпаны индексируемые тексты. Эти слова не попадают в индекс слов, а при запросе на поиск с их участием выдается соответствующее предупреждение. Пример директивы:

    `CommonWords = home they при это они`

    Замечания:
      - FLUIdS поддерживает также динамическое определение "часто-употребляемых" слов с помощью параметров компиляции IGNORE_FILES_LIMIT и IGNORE_PERCENT_LIMIT (или же директив IgnoreFilesLimit и IgnorePercentLimit конфигурационного раздела Job).
      - Если программа flindex выполняется без указания конфигурационного файла, то стоп-словами (на данный момент развития FLUIdS) будут считаться слова a, all, an, and, are, can, could, did, do, for, from, had, have, it, may, not, of, that, the, this, was, will, with, you, your, в, на, не, но, при, по. При указании же конфигурационного файла необходимо самостоятельно прописывать "часто-употребляемые" слова (если есть такое желание). Директива CommonWords поддерживает специальное слово `^^FLUIdSDefault^^`, которое одно заменяет используемый по умолчанию список стоп-слов, например

        `CommonWords = ^^FLUIdSDefault^^ про`

        (возможно, в дальнейшем, дефолтовый список будет расширен).

  ValidWords
    слова, определяемые этой директивой, будут считаться допустимыми индексируемыми словами. Здесь можно перечислить слова, отвергаемые при индексации из-за того, что они не удовлетворяют принятым правилам отбора, т.е.
    - очень маленькие или очень длинные;
    - с разноязычными буквами (например, `Яndex`).
    - состоят из одних цифр, гласных или согласных;
    - число цифр, гласных или согласных, стоящих в слове подряд, превышает максимально допустимое;
    - число повторений одной и той же буквы в слове превышает максимально допустимое.
    Многие из упомянутых правил отбора могут быть отключены в файле ./src/cfg.h и, следовательно, не действовать при индексации, поэтому перечислять в этой директиве стоит только реально отвергаемые слова. (К сожалению, индексация слов вида `TCP/IP` или `C++` пока не предусмотрена.) Кроме того, для перечисленных в директиве слов не действует динамическое определение стоп-слов. Пример директивы:

    `ValidWords = ip чп`

    Замечание: как и в случае с директивой CommonWords, ValidWords поддерживает специальное слово `^^FLUIdSDefault^^`, которое заменяется на список допустимых слов, используемый по умолчанию:

    `ValidWords = ^^FLUIdSDefault^^`

    что эквивалентно такой записи:

        ValidWords = 95 98 ar bg c cc cd cp dd ed h1 h2 h3 h4 h5 h6 fg id
        ValidWords = im ip ln ls mc mv nc ng nt od os pr re rm sh tr vi vm wc
        ValidWords = ад ом си уж ус чп юг яд яndex

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

    `BadWords = xyz`

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

    `RejectWords = ? ??`
      не индексировать слова, состоящие из одной или двух букв.

    `RejectWords = [0-9]* *[0-9]`
      не индексировать слова, начинающиеся с цифры или кончающиеся цифрой

    `RejectWords = {0-9}`
      не индексировать слова, состоящие целиком из цифр

    `RejectWords = *[0-9]*`
      не индексировать слова, в которых встречается хотя бы одна цифра

    `RejectWords = *[^a-zа-я]*`
      не индексировать слова, в которых есть символы, отличные от букв

    `RejectWords = *[а-я]*[a-z]* *[a-z]*[а-я]*`
      не индексировать слова, в которых одновременно присутствуют английские и русские буквы.

  MinWordLength
    определяет минимальную длину индексируемого слова. Пример директивы:

    `MinWordLength = 3`

    Согласно этой директиве, слова, состоящие из одной или двух букв, индексироваться не будут.

    Замечание: по умолчанию минимальная длина индексируемого слова задается параметром компиляции MIN_WORD_LENGTH (в начальных установках - 1).

  MaxWordLength
    определяет максимальную длину индексируемого слова. Пример директивы:

    `MaxWordLength = 14`

    что означает, что все слова, длина которых больше 14-ти символов, индексироваться не будут.

    Замечание: по умолчанию максимальная длина индексируемого слова задается параметром компиляции MAX_WORD_LENGTH (в начальных установках - 32).

  IgnoreFilesLimit
  IgnorePercentLimit
    Служат для динамического определения "часто-употребительных" слов (стоп-слов) в тексте индексируемых файлов. Полностью эквивалентны параметрам компиляции IGNORE_FILES_LIMIT и IGNORE_PERCENT_LIMIT.

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