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

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

flindex -c config

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

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

  • Раздел Main

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

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

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

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

    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), а именно:

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

    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 может быть одним из:

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

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

    [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

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

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

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

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

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

    Замечание: чтобы эти правила работали, необходимо, чтобы:

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

    Если попытка определить кодировку согласно данному методу оказалась неудачной, то 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
    слова, определяемые этой директивой, будут считаться допустимыми индексируемыми словами. Здесь можно перечислить слова, отвергаемые при индексации из-за того, что они не удовлетворяют принятым правилам отбора, т.е. Многие из упомянутых правил отбора могут быть отключены в файле ./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