FLUIdS
Замечания общего свойства
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 (оправдывая свое название) способена индексировать документы только
с диска, в отличии от больнишства современных поисковых систем, работающих с
протоколами доступа HTTP и FTP. Такой подход имеет свои преимущества и
недостатки. К основным недостаткам относятся:
- Невозможность проиндексировать выход исполняемых файлов, например, CGI
модулей, если не предусмотрен специальный механизм генерации подобных Web
страниц (а он пока отсутствует).
- Неправильное восприятие страниц со специальными тегами-командами,
обрабатываемыми Web сервером (SSI, PHP и т.д.)
- Необходимость проведения процедуры индексации на той же машине, на которой
находится содержимое Web сервера.
- Необходимость преобразования локальных имен файлов в полноценный URL
документов, доступных через Всемирную Паутину.
К преимуществам же можно отнести:
- Простота реализации, обуславливающая высокую скорость индексации.
- Возможность индексации скрытых страниц, т.е. запороленных или таких,
ссылки к которым отсутствуют на других страницах сервера.
- Отсутствие обращений к Web серверу, что уменьшает нагрузку на сервер и
соответственно размер log файлов.
- Не нужно создавать вторую копию содержимого Web сервера.
Если "локальный" подход FLUIdS Вас не устраевает, то всегда можно
воспользоваться замечательной свободно распространяемой программой
Wget,
специально созданной для зеркалирования Web и Ftp серверов.
Недостатки 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 использование конфигурационных файлов предусмотрено в двух
ситуациях: при индексации и при поиске с помощью CGI модуля.
При индексации задание конфигурационного файла хоть и необязательно, но
существенно для организации средства поиска через Всемирную Паутину. В нем
прописываются правила перевода реальных имен индексируемых файлов,
находящихся на локальном диске, в полноценные URL, используемые в WWW.
Имя конфигурационного файла индексации задается в командной строке при вызове
программы flindex.
Для поискового CGI модуля конфигурационный файл необходим, без него
fluids.cgi не будет работать, т.к. там указываются индексные файлы,
участвующие в поиске. Имя конфигурационного файла CGI модуля формируется
достаточно сложно, их может быть несколько для каждого модуля, но по
умолчанию используется имя, задаваемое
специальным параметром компиляции
в исходных текстах FLUIdS. В начальных установках он прописан так, что
должен располагаться в одной директории с CGI модулем и иметь имя
fluids.cfg.
Оба типа конфигурационных файлов имеют сходную
организацию, хотя, конечно, различаются наборами директив. В
дистрибутивную поставку FLUIdS входят примеры написания конфигурационных
файлов, которые можно найти в директории ./examples.
FLUIdS изначально разрабатывался с целью поддержки национального алфавита.
Эта поддержка выражается во множестве функций, реализованных в системе, а
именно:
- общение с пользователем на русском языке;
- индексирование слов русского языка, и, следовательно, поиск с участием
русских слов;
- индексация документов, находящихся в разных кодировках;
- получение кодировки индексируемого документа из файла .htaccess;
- поддержка CGI модулем пяти наиболее распространенных в Internet кодировок
русского языка;
- подстройка рабочей кодировки CGI модуля под кодировку клиента (если
используется в качестве Web сервера Russian
Apache);
- возможность автоматического преобразования URL найденного документа
под кодировку пользователя;
- одновременное использование при поиске индексных файлов, созданных в
разных кодировках.
Впрочем, можно сделать и большее:
- перевод индексного файла из одной кодировки в другую (скорее всего
будет реализовано в 4.x);
- возможность поиска с учетом морфологии русского языка (решение этого
вопроса отложено до реализации версий 4.x, где x - большое).
Поисковой системе FLUIdS присущь ряд ограничений, о которых необходимо
знать перед тем, как ее использовать.
- Для компиляции FLUIdS необходим
ANSI-совместимый C-компилятор.
- Один байт считается состоящим из восьми битов, что справедливо для
подавляющего числа используемых в настоящее время платформ.
- FLUIdS расчитана на использование прежде всего в 32-х разрядных системах
(как мимнимум). Хотя FLUIdS можно скомпилировать и для 16-ти разрядной
системы, нужно иметь в виду, что в исходном коде не делается проверок на
переполнение при сложении целочисленных величин.
- Число индексируемых документов для одного индексного файла не должно
превышать величины 2097151. Основания для такого ограничения есть, но
вряд ли Вам придется с ними разбираться...
- Во время индексации flindex создает
временные файлы в директории,
специально предназначенной для таких вещей (обычно это директория
/tmp). Раздел диска, на котором создана эта директория, должен иметь
достаточно свободного пространства, вмещающего как минимум два полных
индекса.
- Число одновременно используемых индексов с CGI модулем fluids.cgi
ограничено максимальным числом одновременно открытых файлов в операционной
системе.
- Для объединения индексных файлов в один требуется, чтобы они все
были в одной кодировке.
- CGI модуль работает с HTTP методом GET, поэтому размер пользовательского
запроса на поиск ограничен 1024 символами (или 4096, в зависимости от
Web-сервера и пользовательского браузера).
Большинство ограничений можно снять тем или иным способом, описанным в
соответствующем разделе документации.