# FLUIdS
Замечания общего свойства

- Немного истории
- Недостатки и преимущества FLUIdS
- Общие принципы работы FLUIdS
- Конфигурационные файлы FLUIdS
- Поддержка русского языка в FLUIdS
- Ограничения, заложенные в FLUIdS
- Особенности реализации FLUIdS для MS Windows 95/NT
- Особенности реализации FLUIdS для OS/2

| Немного истории |

FLUIdS начала отсчет своего существования с середины 1997 года и первоначально базировалась на руссифицированных кодах SWISH, "простой индексной системы", которую разработал Kevin Hughes. Однако SWISH оказался слишком простой системой, содержал множество ошибок и неэффективного кода, и в нем отсутствовал специализированный CGI модуль. Кроме того, автор SWISH'а пожелал сохранить на этот продукт авторские права, не переведя его в разряд "public domain". Поэтому было решено создать свой, независимый продукт, максимально приспособленный для использования в русско-язычном Internet. Исходный код поисковой системы переписывался трижды и теперь в нем практически нет оригинального кода SWISH. С версии 3.5 система стала называться FLUIdS, a c версии 3.9 была спозиционирована в Internet для всеобщего использования.

FLUIdS, как и SWISH, - акроним. Он раскрывается как For Local Use Indexing System, что вполне соответствует названию. Строго говоря, буква d - лишняя, но тогда не получилось бы красивого названия.

| Недостатки и преимущества FLUIdS |

FLUIdS (оправдывая свое название) способена индексировать документы только с диска, в отличии от больнишства современных поисковых систем, работающих с протоколами доступа HTTP и FTP. Такой подход имеет свои преимущества и недостатки. К основным недостаткам относятся:

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

К преимуществам же можно отнести:

- Простота реализации, обуславливающая высокую скорость индексации.
- Возможность индексации скрытых страниц, т.е. запороленных или таких, ссылки к которым отсутствуют на других страницах сервера.
- Отсутствие обращений к Web серверу, что уменьшает нагрузку на сервер и соответственно размер log файлов.
- Не нужно создавать вторую копию содержимого Web сервера.

Если "локальный" подход FLUIdS Вас не устраевает, то всегда можно воспользоваться замечательной свободно распространяемой программой Wget, специально созданной для зеркалирования Web и Ftp серверов.

Недостатки FLUIdS, которые скорее можно отнести в разряд недоделок:

- Отсутствует механизм фильтров.
- Не реализован поиск по фразам.
- Не возможен поиск с учетом морфологии русского языка.

Некоторые достоинства FLUIdS:

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

| Общие принципы работы FLUIdS |

Сейчас FLUIdS представляет собой набор из пяти исполняемых модулей, четыре из которых выполняются в режиме командной строки, и один - CGI модуль - используется совместно с Web сервером.

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

flsearch
  осуществляет поиск по одному или нескольким индексным файлам. Язык запросов поддерживает булевы операции OR, AND и NOT. Для каждого найденного документа сообщается его размер в байтах, ссылка (URL документа или соответствующее ему имя файла) и заголовок, если документ находится в формате HTML. Возможен расширенный формат представления результатов поиска. Найденые ссылки выдаются в отсортированном порядке, правда, отдельно для каждого индекса.

flmerge
  позволяет объединить несколько индексных файлов в один, при этом они могут перекрываться, т.е. содержать ссылки на одни и те же документы. Все объединяемые индексы должны быть в одной кодировке.

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

fluids.cgi (или fluids.exe)
  основной поисковый модуль, применяемый совместно с Web сервером. Самостоятельно генерирует HTML форму запроса и обеспечивает разбивку результатов поиска на страницы с фиксированным числом найденных ссылок на каждой. В отличии от flsearch найденые ссылки сортируются без учета принадлежности тому или иному индексу.

Таким образом, с помощью программы flindex формируются индексные файлы, необходимые модулям flsearch и fluids.cgi для организации процедуры поиска. Модули flmerge и fldump могут рассматриваться как дополнительные полезные утилиты.

| Конфигурационные файлы FLUIdS |

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

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

Для поискового CGI модуля конфигурационный файл необходим, без него fluids.cgi не будет работать, т.к. там указываются индексные файлы, участвующие в поиске. Имя конфигурационного файла CGI модуля формируется достаточно сложно, их может быть несколько для каждого модуля, но по умолчанию используется имя, задаваемое специальным параметром компиляции в исходных текстах FLUIdS. В начальных установках он прописан так, что должен располагаться в одной директории с CGI модулем и иметь имя fluids.cfg.

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

| Поддержка русского языка в FLUIdS |

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

- общение с пользователем на русском языке;
- индексирование слов русского языка, и, следовательно, поиск с участием русских слов;
- индексация документов, находящихся в разных кодировках;
- получение кодировки индексируемого документа из файла .htaccess;
- поддержка CGI модулем пяти наиболее распространенных в Internet кодировок русского языка;
- подстройка рабочей кодировки CGI модуля под кодировку клиента (если используется в качестве Web сервера Russian Apache);
- возможность автоматического преобразования URL найденного документа под кодировку пользователя;
- одновременное использование при поиске индексных файлов, созданных в разных кодировках.

Впрочем, можно сделать и большее:

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

| Ограничения, заложенные в FLUIdS |

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

- Для компиляции FLUIdS необходим ANSI-совместимый C-компилятор.
- Один байт считается состоящим из восьми битов, что справедливо для подавляющего числа используемых в настоящее время платформ.
- FLUIdS расчитана на использование прежде всего в 32-х разрядных системах (как мимнимум). Хотя FLUIdS можно скомпилировать и для 16-ти разрядной системы, нужно иметь в виду, что в исходном коде не делается проверок на переполнение при сложении целочисленных величин.
- Число индексируемых документов для одного индексного файла не должно превышать величины 2097151. Основания для такого ограничения есть, но вряд ли Вам придется с ними разбираться...
- Во время индексации flindex создает временные файлы в директории, специально предназначенной для таких вещей (обычно это директория /tmp). Раздел диска, на котором создана эта директория, должен иметь достаточно свободного пространства, вмещающего как минимум два полных индекса.
- Число одновременно используемых индексов с CGI модулем fluids.cgi ограничено максимальным числом одновременно открытых файлов в операционной системе.
- Для объединения индексных файлов в один требуется, чтобы они все были в одной кодировке.
- CGI модуль работает с HTTP методом GET, поэтому размер пользовательского запроса на поиск ограничен 1024 символами (или 4096, в зависимости от Web-сервера и пользовательского браузера).

Большинство ограничений можно снять тем или иным способом, описанным в соответствующем разделе документации.

На главную страницу | valera@sbnet.ru