# FLUIdS:
cfg.h

В файле cfg.h определяются основные настраиваемые параметры компиляции системы FLUIdS. Всю их совокупность можно условно разделить на четыре группы:

- общие параметры компиляции, влияющие на всю систему в целом;
- параметры компиляции, относящиеся к процессу индексации документов;
- параметры поиска;
- параметры CGI модуля.

| Общие параметры компиляции |

RUSSIAN_RELEASE
  - Определяет, включена поддержка русского языка или нет. Поддержка русского языка означает возможность индексации русскоязычных документов, поиск по запросу с участием ключевых слов на русском языке, разного рода перекодировки (из одной кодировки в другую) и многое другое.
  - Если Вы не хотите поддерживать русский язык, то просто закоментируйте данную опцию.
  - Действие параметра компиляции RUSSIAN_RELEASE зависит от другого параметра RUSSIAN_SUPPORT, определяемого в файле ./src/zcfg.h. Если последний не задан, то в системе будет отсутствовать поддержка русского языка вне зависимомти от того, установлен RUSSIAN_RELEASE или нет.

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

MIN_WORD_LENGTH
  - Минимальная длина индексируемого слова.
  - Все слова, длина которых меньше MIN_WORD_LENGTH, не будут индексироваться и, соотвественно, включаться в индексный файл. Это эффективный способ отсеивания разного рода предлогов и артиклей. Если все же необходимо удерживать некоторые короткие слова, такие как ip, nt или os, то это можно сделать с помощью директивы ValidWords в конфигурационном файле при индексации.
  - `Замечание`: значение этого параметра, заданное по умолчанию, можно изменить с помощью директивы MinWordLength конфигурационного файла индексации.

MAX_WORD_LENGTH
  - Максимальная длина индексируемого слова.
  - `Замечание`: значение этого параметра, заданное по умолчанию, можно изменить с помощью директивы MaxWordLength конфигурационного файла индексации.

DEFAULT_INDEX_FILE_NAME
  - Имя индексного файла, используемое по умолчанию.
  - Если в командной строке вызова программ flindex, flsearch и flmerge не указан индексный файл (с помощью опции -f), то будет использовано это имя.

DEFAULT_VERBOSE_LEVEL
  - Задает уровень детальности выводимых сообщений при выполнении программ flindex и flmerge. Он не относится к сообщениям об ошибках, а лишь к дополнительной информации о процессе индексации или объединения двух индексов.
  - Возможные значения этого параметра - 0, 1, 2 и 3. Значение 0 отвечает полностью "безмолвному" выполнению программ, 3 - максимально подробному. 1 и 2 - промежуточные варианты.
  - Уровень детальности сообщений, принятый по умолчанию, можно изменить в командной строке, использовав опцию -v.

INDEX_PERMISIONS
  - Атрибуты защиты для создаваемых индексных файлов.
  - Программы flindex и flmerge создают индексные файлы с теми атрибутами защиты, которые определены для пользователя, от имени которого эти программы выполняются. Это не всегда удобно. Если первоначальные атрибуты защиты не предусматривают доступа на чтение "остальным" процессам, а такой доступ необходим, то установив INDEX_PERMISIONS в 0644, Вы устраните данную проблему. Кроме того, таким образом можно отменить права на запись, если изначально такие права существовали.
  - Если Вы не хотите менять атрибуты защиты индексных файлов, то закоментируйте этот параметр.

MAX_NAME_LENGTH
  - Максимальная длина имени или URL проиндексированного документа в индексном файле.
  - Если реальная длина имени или URL проиндексированного документа превышает данный параметр, то имя или URL будет урезано. Поэтому не следует задавать слишком малые значения для этого параметра, тем более, что он не влияет на размер индексного файла.

MAX_TITLE_LENGTH
  - Максимальная длина заглавия гипертекстового документа, сохраняемая в индексном файле.
  - Вы можете установить этот параметр в 0 с тем, чтобы исключить подобную информацию из индексного файла, но, право, не стоит этого делать.

MAX_CONTENT_LENGTH
  - Максимальный размер фрагмента текста проиндексированного текстового (или гипертекстового) документа (в символах), сохраняемого в индексном файле.
  - Подобный фрагмент документа, выводимый вместе с результатами поиска, очень удобен для пользователя, позволяя ему легко ориентироваться в том, нужен ему данный документ или нет.
  - Этот параметр также может быть установлен в 0. При этом размер индексного файла ощутимо уменьшится, но пользователь будет лишен возможности оценивать содержимое найденного документа.

| Параметры индексации |

MAX_SWAP_FILES
  - Означает максимальное число своп-файлов при индексации. Если этот параметр уставить в 0, то при индексации FLUIdS не будет прибегать к свопингу.
  - Если размер индекса слов становится слишком большим, то он уже не умещается в оперативную память, отведенную операционной системой под выполнение процесса. Тогда операционная система в качестве оперативной памяти начинает активно использовать дисковое пространство, специально выделенное для этих целей, то есть заниматься свопингом. Это сильно замедляет выполнение процесса индексации, так как скорость обмена с диском значительно ниже, чем с памятью. Избежать такой ситуации и позволяет встроенный в FLUIdS внутренний механизм свопинга.
  - `Замечание`: решение о том, что пора задействовать подобный механизм, FLUIdS принимает на основе значения параметра MAX_MEMORY_VOLUM.
  - `Замечание`: первоначальное значение этого параметра можно изменить с помощью директивы MaxSwapFiles конфигурационного файла индексации.

MAX_MEMORY_VOLUM
  - Максимальный объем оперативной памяти, выделяемый для индекса слов в процессе индексации. Если суммарный размер получающегося индекса слов превысит заданную величину, FLUIdS задействует внутренний механизм свопинга, то есть сбросит данные во временный файл, высвобождая память для дальнейшего использования.
  - Оптимальное значение этого параметра определяется эмпирическим путем. Оно варьируется где-то от одной десятой - для загруженных систем - до одной трети - для совсем не загруженных - от общего объема оперативной памяти, установленной в компьютере. Если задать значение MAX_MEMORY_VOLUM слишком большим, то в дело вступит системный механизм свопинга UNIX'а, приводящий к заметному замедлению процесса индексации. Если же выбрать MAX_MEMORY_VOLUM слишком маленьким - то FLUIdS будет неоправданно часто сбрасывать данные на диск, что тоже замедлит работу программы, хотя и не так сильно.
  - Все же, для начала, лучше выбрать меньшее значение для этого параметра.
  - Значение MAX_MEMORY_VOLUM не играет никакий роли, если параметр MAX_SWAP_FILES установлен в 0.
  - `Замечание`: значение этого параметра, заданное по умолчанию, можно изменить с помощью директивы MaxMemoryVolum конфигурационного файла индексации.

IGNORE_FILES_LIMIT
IGNORE_PERCENT_LIMIT
  - Данные параметры позволяют исключить из индекса слова, которые слишком часто встречаются в разных документах (стоп-слова). Так, если какое-либо слово присутствует в более чем IGNORE_PERCENT_LIMIT процентах индексируемых документов от их общего числа, то оно будет помечено как "часто употребляемое" и исключено из индексного файла. На запрос пользователя с участием подобного слова будет выдано соответствующее предупреждение.
  - Чтобы это имело смысл, необходимо определить минимальное число индексируемых документов, начиная с которого данное ограничение на частоту встречаемости слов вступало в силу. Для этого служит параметр IGNORE_FILES_LIMIT, значение которого должно быть достаточно большим. Например, если мы определим IGNORE_PERCENT_LIMIT как 50 (процентов!), а IGNORE_FILES_LIMIT как 500, то "часто употребляемыми" словами будут считаться слова, встречающиеся в более чем пятистах индексируемых файлах и одновременно в более чем 50% от их общего числа. (Конечно, в данном примере общее число индексируемых файлов должно превышать 1000, чтобы FLUIdS начал определять среди слов "часто употребляемые".)
  - Грамотное использование этих параметров может несколько снизить объем итогового индексного файла без существенных последствий. Если Вы не хотите динамического определения стоп-слов, задайте IGNORE_PERCENT_LIMIT как 101.
  - `Замечание`: при индексации значения этих параметров можно изменить с помощью директив IgnoreFilesLimit и IgnorePercentLimit в конфигурационном файле индексации. Заранее (до непосредственной индексации) определить "часто употребляемое" слово так же можно с помощью директивы CommonWords.

DEFAULT_CONTENT_TYPE
  - Тип индексируемого файла, приписываемый ему в том случае, если FLUIdS не смог определить его тип исходя из расширения этого файла.
  - На данный момент FLUIdS распознает три типа файлов (документов): гипертекстовые, просто текстовые и нетекстовые. Соответствующие этим типам значения параметра DEFAULT_CONTENT_TYPE - CTYPE_HTML, CTYPE_TEXT и CTYPE_NONTEXT. Дополнительное значение CTYPE_UNKNOWN означает запрет на индексацию файлов с неизвестным типом.
  - Самым разумным выбором значения для этого параметра компиляции было бы CTYPE_UNKNOWN, но Вы можете определить его и как CTYPE_TEXT. При этом необходимо тчательно перечислить все расширения для нетекстовых типов документов, чтобы FLUIdS, наткнувшись на бинарный файл с неизвестным расширением, не воспринял его как текстовый.
  - `Замечание`: приписать тип файлу, основываясь на его расширении, можно с помощью директив ctype конфигурационного файла индексации. Если же при индексации конфигурационный файл не используется, то действуют следующие правила определения типа документа, принятые по умолчанию (файл ./src/fluids/flindex/indexjob.c): файлы с расширениями htm, html, shtml, HTM, HTML и SHTML считаются гипертекстовыми, с расширениями txt и TXT - просто текстовыми, а с расширениями jpg, jpeg, gif, JPG, JPEG, GIF - нетекстовыми. Остальные файлы ингорируются.

INDEX_CONTENT_FILE_NAMES
  - Определяет необходимость индексирования имен файлов с содержанием (то есть текстовых или гипертекстовых, см. DEFAULT_CONTENT_TYPE).
  - Для нетекстовых документов (без содержания) FLUIdS индексирует всегда только имя этого файла (что, согласитесь, вполне разумно). Для файлов с содержанием можно запретить индексировать их имена, закоментировав этот параметр, а индексировать только их содержимое.
  - `Замечание`: имена файлов индексируются без расширений и путей.

CHARSET_META_TAG_BYTES
  - Число первых байт индексируемого гипертекстового документа, среди которых FLUIdS будет искать тег META с выставленной кодировкой этого файла.
  - `Замечание`: значение параметра CHARSET_META_TAG_BYTES не важно, если в конфигурационном файле индексации в директиве CharsetMethods не прописан метод ByMetaTag.

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

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

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

WORD_CHAR_BITS
  - Задает биты символов, из которых может состоять индексируемое слово.
  - В таблице символов (./src/libz/chars1.c) каждому символу соответствует набор битов, несущих смысловую нагрузку. Например, цифрам (символам 0123456789) соответствует бит CHAR_DIGIT, английским буквам (символам от a до z) - CHAR_ENGLISH, русским - CHAR_RUSSIAN. Поэтому сочетание битов

    (CHAR_ENGLISH | CHAR_RUSSIAN | CHAR_DIGIT)

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

  - `Замечание`: если отключена поддержка русского языка, то исключать бит CHAR_RUSSIAN из параметра WORD_CHAR_BITS необязательно.

BEGIN_WORD_CHAR_BITS
  - Задает биты символов, с которых может начинаться индексируемое слово. Эти биты должны быть подмножеством битов, заданных в параметре WORD_CHAR_BITS.
  - Например, определив BEGIN_WORD_CHAR_BITS как

    (CHAR_ENGLISH | CHAR_RUSSIAN)

    можно исключить из процесса индексации все слова, начинающиеся с цифры.

  - Если нет необходимости вводить подобное ограничение на индексируемые слова, данный параметр можно закоментировать.

END_WORD_CHAR_BITS
  - Этот параметр подобен BEGIN_WORD_CHAR_BITS, за исключением того, что он касается символов, на которые могут оканчиваться индексируемые слова.

MAX_EQUAL_SEQUENCE_SIZE
  - Максимальное число последовательных повторений одной и той же буквы в слове.
  - Имеет смысл ограничить значение этого параметра числом три (для слов вида длинношеее или змееед). В абревиатурах повторения встречаются даже чаще, например, PPP - Point-to-Point Protocol, но тоже числом повторений вряд ли более трех.

MAX_VOWEL_SEQUENCE_SIZE
  - Максимальное число гласных в слове, стоящих подряд.

MAX_CONSONANT_SEQUENCE_SIZE
  - Максимальное число согласных в слове, стоящих подряд.

MAX_DIGIT_SEQUENCE_SIZE
  - Максимальное число цифр в слове, стоящих подряд.

SINGLE_LANGUAGE_WORDS
  - В слове допускается наличие букв только одного из национальных алфавитов, английского или русского.

IGNORE_ALL_DIGITS_WORD
  - Считать неприемлимыми слова, состоящие только из цифр.

IGNORE_ALL_CONSONANTS_WORD
  - Считать неприемлимыми слова, состоящие только из согласных.
  - Этим правилом можно отвергнуть можество вполне законных абревиатур, например, TCP, DHCP или HTML.

IGNORE_ALL_VOWELS_WORD
  - Считать неприемлимыми слова, состоящие только из гласных.

| Параметры поиска |

MAX_HITS
  - Максимальное число результатов поиска, выводимое на экран.
  - Действенен только для программы flsearch. Для CGI модуля задается другой параметр, DEFAULT_PAGE_SIZE, имеющий и несколько иной смысл.
  - Если число документов, удовлетворяющих запросу пользователя, превышает заданное значение, то выдано будет только первых MAX_HITS результата. Чтобы выводились все результаты поиска, определите этот параметр как `-1`.
  - `Замечание`: значение MAX_HITS, заданное по умолчанию, можно изменить с помощью опции -m в командной строке.

DEFAULT_OPERATION
  - Логическая операция, связывающая два ключевых слова в запросе пользователя, если такая операция не задана пользователем явно. Параметр может принимать значения optOr и optAnd для логических операций OR и AND соответственно.
  - Лучше всего определить DEFAULT_OPERATION как optAnd. Тогда, например, запрос `"yellow submarine"` будет воспринят как `yellow and submarine`, и, хотя FLUIdS не умеет искать фразы, то по крайне мере будет гарантировано, что в найденных документах встречается как слово `yellow`, так и `submarine`.

SUBWORD_SEARCH
  - Определяет возможность поиска по ключевым словам, начинающимися метасимволами `*` и `?`. Не рекомедуется пользоваться этой возможностью, так как для каждого такого слова просматривается весь индекс слов в индексном файле, что занимает значительное время. Впрочем, начальные установки определяют этот параметр.

| Параметры CGI модуля |

FLUIDS_CONF_FILE
  - Имя конфигурационного файла для CGI модуля. Зто имя будет использоваться только, если в HTTP запросе не будет определена переменная cfg.
  - Это имя можно задать тремя способами:
    - как полное имя файла, т.е. с точным указанием пути от корня файловой системы (например: /www/fluids/fluids.conf);
    - как неполное имя файла, т.е. либо совсем без указания пути (например: fluids.conf), либо с частичным префиксом пути (conf/fluids.conf). В этом случае имя конфигурационного файла будет расширено значением параметра FLUIDS_ROOT_DIR.
    - как относительное имя (тогда оно должно начинаться с символов ~/). Относительность здесь подразумеватся по отношению к месторасположению CGI модуля (например, если полное имя CGI модуля - /www/cgi-bin/fluids.cgi, а FLUIDS_CONF_FILE задан как ~/fluids/conf.file, то имя конфигурационного файла будет определено как /www/cgi-bin/fluids/conf.file). (Полное имя CGI модуля содержится в значении переменной окружения SCRIPT_FILENAME, устанавливаемой Web сервером).

FLUIDS_ROOT_DIR
  - Корневая директория для используемых системой файлов (конфигурационных, индексных или тех, чье содержимое может быть включено в текст HTML страницы, генерируемой CGI модулем), если их имена заданы в неполной форме (в начальных установках или в конфигурационных файлах).
  - Это относится прежде всего к имени конфигурационного файла, определяемого параметром FLUIDS_CONF_FILE или переменной cfg в HTTP запросе.
  - Директория может быть задана одним из трех путей:
    - как полное или неполное имя реально существующей директории;
    - как имя, совпадающее с символом '~' или начинающееся с символов '~/'. В таком случае эти символы будут или заменены на имя директории CGI модуля, если Web-сервер определяет переменную окружения SCRIPT_FILENAME, или отброшены, в противном случае.
    - как NULL. В таком случае никаких дополнительных преобразований имен файлов не производится.
  - `Замечание`: в самом конфигурационном файле можно переопределить корневую директорию директивой RootDir. Тогда значение параметра FLUIDS_ROOT_DIR будет использоваться только для определения имени конфигурационного файла.

FLUIDS_CYR_CONVERT
  - Определяет возможность самостоятельной перекодировки CGI модулем данных, получаемых от пользователя, и сгенерированных HTML страниц, передаваемых пользователю.
  - Web сервер Russian Apache может взять на себя эти функции. Тогда устанавливать этот параметр категорически не рекомендуется.

FLUIDS_CHARSET_LIST
  - Задает возможность для CGI модуля вывода в сгенерированную HTML страничку набора ссылок, по одной на каждую поддерживаемую кодировку. Тогда пользователь, выбрав соответствующую ссылку, может изменить кодировку, если текущая ему не подходит.
  - Такая возможность предоставляется, только если установлен параметр компиляции FLUIDS_CYR_CONVERT.

FLUIDS_CYR_REPLACE
  - Задает возможность адаптации найденных ссылок к кодировке пользователя.
  - Так, например, найденная ссылка http://www.sbnet.ru/some-url может быть переведена в http://win.www.sbnet.ru/some-url для пользователя, работающего в win кодировке. (Здесь предполагается, что сервер win.www.sbnet.ru (возможно виртульный) выдает пользователю хранимые документы только в кодировке windows-1251.)
  - `Замечание`: правила конвертации ссылок под кодировку пользователя задаются в блоке Replace конфигурационного файла CGI модуля.

DEFAULT_TERSE_LEVEL
  - Степень подробности сообщаемой информации о каждой найденной ссылке.
  - Параметр может принимать три значения: trsDetailed (для наиболее подробной информации), trsStandart (для не слишком подробной) и trsShort (для очень краткой).
  - `Замечание`: пользователь может использовать другую степень подробности сообщаемой информации о каждой найденной ссылке, выбрав в бланке запроса подходящее значение.

DEFAULT_PAGE_SIZE
  - Число результатов поиска, сообщаемое пользователю за один сеанс.
  - Вся совокупность результатов поиска разбивается на страницы по DEFAULT_PAGE_SIZE штук на каждой, и пользователю передается только одна из них, а на остальные формируются гипертекстовые ссылки (с указанием порядкового номера страницы).
  - Разрешенные значения для этого параметра: 10, 20, 30, 40 и 50.
  - `Замечание`: пользователь может изменить размер страницы результатов, выбрав в бланке запроса подходящее значение.

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

DEFAULT_QUERY_TYPE
  - Разрешенные значения для этого параметра: qtpExternalForm и qtpInternalForm.

DEFAULT_USER_OPTIONS
  - Разрешает вывод тех или иных элементов генерируемых CGI модулем страниц. Представляет собой набор битов, объединенных операцией OR. Возможны следующие биты:
    - USEROPTION_FLUIDS_LOGO - разрешает вывод заголовка страницы с логотипом FLUIdS;
    - USEROPTION_META_CHARSET_TAG - разрешает вывод тега META с именем кодировки клиента;
    - USEROPTION_CHARSET_LIST - выдавать автоматически создаваемый набора ссылок, соответствующий поддерживаемым кодировкам;
    - USEROPTION_SEARCH_TIME - выводить время, затраченное на обслуживание пользовательского запроса (т.е. время поиска);
    - USEROPTION_EXECUTED_QUERY - выдавать пользовательский запрос в том виде, в котором он был воспринят поисковой системой;
    - USEROPTION_PROBLEM_WORDS - выдавать список ключевых слов в запросе, вызвавших затруднения при поиске;
    - USEROPTION_LOGO_SPECIAL_EFFECTS - в заголовке страницы с логотипом FLUIdS использовать спецэффекты (для браузеров IE и NN четвертых версий и старше);
    - USEROPTION_ESCAPED_URLS - экранировать в ссылках русские буквы.
  - `Замечание`: значение DEFAULT_USER_OPTIONS, заданное по умолчанию, можно изменить с помощью директивы Options конфигурационного файла CGI модуля.

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

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