FLUIdS
Что нового
В конфигурационный файл индексации добавлена директива
MaxContentLength,
с помощью которой можно изменить (правда, только в меньшую сторону) значение
для максимального размера фрагмента текста индексируемого документа в
символах, сохраняемого в индексном файле. Начальное значение регулируется
параметром компиляции
MAX_CONTENT_LENGTH.
Кроме того, исправлены обнаруженные ошибки.
В конфигурационный файл индексации добавлена директива
ConvertToRussian,
позволяющяя задать замены для английских букв в индексируемых русских словах.
Чаще всего такая замена требуется для русской буквы 'р', которую очень часто
заменяют на английскую букву 'p', сходную по начертанию.
Судя по всему, это последняя подверсия из 4.2.x. В ней:
- Добавлена утилита depender, с помощью которой теперь формируется файл
зависимостей исходных текстов поисковой системы от включаемых файлов.
- Для программы flmerge введена опция -d для чтения имен
объединяемых индексных файлов со стандартного ввода (STDIN).
- Введена возможность перевода исходных текстов из фомата DOS в формат
UNIX и обратно командами make to_unix и
make to_dos.
- Слегка обновлена документация (в частности, добавлено
описание параметров вызова CGI модуля).
- Исправлены обнаруженные ошибки.
В этой версии внесено несколько "косметических" изменений:
- Начаты работы по созданию украинского интерфейса. Пока украинифицированы
только библиотеки, CGI модуль еще нуждается в обработке.
Соответственно, в файл ~/zcfg.h добавлен параметр
компиляции UKRAINIAN_INTERFACE.
- В конфигурационный файл индексации добавлены директивы
AcceptFileName,
AcceptDirName,
AcceptFullPathFile и
AcceptDirWithFile,
являющиеся аналогами директив
Ignore*, только с
противоположным, разрешающим, смыслом.
- В конфигурационный файл индексации добавлены директивы
AcceptFileURL и
IgnoreFileURL для
отсева индексируемых файлов по их URL.
- В конфигурационный файл CGI модуля добавлена секция strings и набор
директив для нее, позволяющие изменить некоторые строки, используемые при
выводе бланка запроса и результатов поиска (без применения профильных файлов).
- В раздел index конфигурационного файла CGI модуля добавлена директива
replace для изменения зашитых в индексных файлах URL.
- Помимо этого, исправлены найденные ошибки.
Исправлена ошибка, связанная с переиндексацией. Если индексировался
измененный документ, то в индексном файле о нем оставалась старая информация.
Главное в этой версии - возможность переиндексации контента. Данная
возможность реализуется опциями -r
и -u программы
flindex. Переиндексация производится
таким образом, что не изменившиеся документы не индексируются по-новой,
информация о них извлекается из старого индексного файла, что значительно
ускоряет сам процесс переиндексации. Переиндексация с опцией -r
удаляет из индексного файла отсутствующие документы, в то время как
опция -u позволяет сохранять их.
Введенная возможность переиндексации контента имеет некоторые побочные
эффекты. Во-первых, в индексном файле стала сохраняться информация о
пустых проиндексированных документах (т.е. с нулевым числом
проиндексированных в них слов), что несколько увеличивает размер самого
индекса. Во-вторых, несколько (весьма незначительно, но все же) изменились
весовые коэффициенты для коротких индексируемых документов (с числом
проиндексированных слов, меньших 100), поэтому перед использованием
новых опций -r и -u лучше произвести полную реиндексацию
имеющегося контента.
Разработанное API поиска воплотилось в реальные
библитеки, которые генерятся для всех поддерживаемых платформ. При этом
библиотеки формируются как статические, так и динамические.
Также в этой версии произошел отказ от поддержки компилятора Borland C++ 5.0,
в связи с его неудовлетворительной работой.
Кроме того, исправлены найденные ошибки.
В этой версии только исправлены замеченные ошибки и устранены некоторые
недоделки.
В этой версии:
- Разработано API для поиска (файл ./src/fluids/libflu/searcher.c).
Программы поиска (CGI модуль и flsearch) переписаны таким образом, чтобы
использовать только это API и не применять низкоуровневых функций, работающих
с индексными файлами. К сожалению, соответствующие библитеки (статические
или динамические) пока не формируются, их создание отложено до версии 4.1.1.
- Начиная с этой версии программа flsearch более не различает
принадлежность результата поиска тому или иному индексу; найденные ссылки
сортируются и выдаются единым потоком.
- Кардинально улудшена схема поддерки Web-сервера Russian Apache:
- Вне зависимости от того, осуществляет ли CGI модуль самостоятельную
перекодировку или нет, производится экранирование русских букв в
ссылках (что особенно важно для ссылок на другие результаты поиска);
экранирование отключается установкой опции noEscapedURLs в
конфигурационном файле)
- Если CGI модуль определяет, что он исполняется из под сервера Russian
Apache, то он отключает самостоятельную перекодировку в кодировку
клиента, а генереруемые страницы выводит в кодировке, запрашиваемой
сервером. В результате, если кодировкой по умолчанию у Russian Apache
является одна из поддерживаемых FLUIdS, то отпадает необходимость
прописывать в настройках Web-сервера директиву CharsetSourceEnc на CGI
модуль.
- Введена возможность исключения из процесса индексации части
гипертекстового файла. Это делается с помощью тегов
<!--noindex--> и <!--/noindex-->, текст
между ними не индексируется. (Теги должны быть именно такими, без
дополнительных пробелов или других символов.)
- Особо необходимо отметить возможность объявления параметра компиляции
FLUIDS_CONF_DIR в NULL.
Новое в этой версии:
- Введена новая директива CharsetMethods
конфигурационного файла индексации в разделы [defaults]/[job]
для задания методов определения кодировки индексируемого файла и, заодно,
порядка их применения.
- Добавлен параметр компиляции
CHARSET_META_TAG_BYTES
в файл ./src/cfg.h (он имеет отношение к методу ByMetaTag
определения кодировки индексируемого файла).
- Добавлена директива face в раздел [index]
конфигурационного файла CGI модуля, и переменная
$INDEX_FACE в
профильный файл результата поиска. По значению этой переменной теперь
можно судить о принадлежности результата поиска тому или иному индексу.
Например, профильный файл результата поиска может содержать такой текст:
$if{ $INDEX_FACE == 1 }
<img src="docs.gif">
$else
<img src="other.gif">
$endif
Здесь для индекса с face, равном единице, будет использована
иконка docs.gif, для остальных же - other.gif.
- В стартовый и завершающий профильные файлы добавлена переменная
$QUERY_FORM.
Главная цель нововведения - позволить бланку запроса быть расположенным
до результатов поиска, а не после, как принято по умолчанию.
Внимание!!! Если Вы переопределили
профильный файл EndResultFile,
то в его конец необходимо добавить переменную $QUERY_FORM, в
противном случае на странице с результатами поиска будет отсутсвовать
бланк запроса...
- Для программы flindex добавлена опция вызова
-o.
Основным новшеством в этой версии является возможность определения кодировки
индексируемых файлов по директиве CharsetSourceEnc файла доступа
Web сервера (обычно это файл .htaccess). Эта возможность реализуется
заданием в конфигурационном файле индексации имени файла доступа директивой
AccessFile в разделах
[defaults] и/или [job].
Кроме того, для программы flindex добавлена
возможность чтения объектов индексации
со стандартного входа (STDIN).
Основной упор в этой версии был сделан на поддержку украинского и
белорусского языков, которая включается установкой параметра компиляции
UKRAINIAN_SUPPORT.
В этой связи также представляют интерес параметры компиляции
APPLY_CYR_RUSCII и
APPLY_ISO_GHE.
К сожалению, интерфейс на украинском языке пока отсутствует, поскольку
отсутствует и переводчик.
Кроме того, исправлены обнаруженные ошибки.
По сравнению с последней беттой произошли следующие изменения:
- Появилась поддержка "проэкций файлов"
(вызов mmap()), соответствующим образом переработан код, чтоб
избавиться от ставших ненужным копирований; в результате скорость обработки
данных индексного файла еще немного возрасла.
- Изменился формат индексного файла, поэтому потребуется полная
переиндексация.
- Усилен контроль за содежимым индексного файла.
- Исправлена ошибка в модуле поиска, приводившая к значительному
замедлению процесса поиска на сложных запросах вида "a* and b* or c*"
или "*?ware".
- Система посчитана оттестированой в достаточной степени. Безусловно, это
не означает, что в ней не осталось ошибок, ибо ошибки, как и атом, неисчерпаемы.
Новое в 4.0:
- Платформо-независимый формат индексного файла.
- Введена эмуляция поиска с учетом регистра ключевых слов. Поисковая
система теперь разпознает 4 разновидности слов:
- все буквы в слове - строчные (например, weekend, 11th);
- все буквы в слове - прописные (например, ММВБ, МОДУЛЬ0);
- первая буква в слове - прописная, остальные - строчные (например,
Apache, Иванов, Н0ль);
- все остальное (например, 3DStudio, FLUIdS). В этом
случае не делается различия между словами, отличающимися
написанием строчных и прописных букв (например, слова FLUIdS и
FLUiDS считаются эквивалентными).
По умолчанию программа flsearch ищет в регистро-зависимом режиме
(регистро-независимый задается опцией -i), а CGI модуль - в
регистро-независимом. Чтобы заставить CGI модуль по умолчанию различать
строчные и прописные буквы в запросе, можно вызвать CGI модуль с
дополнительным параметром sf со значением cd:
- <a href="fluids.cgi?sf=cd">Поиск</a>
или прописать этот параметр в бланке запроса:
- <input type="hidden" name="sf" value="cd">
- Усовершенствован формат индексного файла. В результате скорость поиска
возрасла от полутора до нескольких раз.
- В ключевых словах поиска можно применять метасимволы * и
? (причем в любом месте ключевого слова. И даже в начале,
если при компиляции в файле ./src/cfg.h определен параметр SUBWORD_SEARCH).
Ранее был разрешен только метасимвол *, и только на конце
ключевых слов.
- При индексации возможно применение нескольких своп-файлов, причем
сама скорость своппинга возрасла. В результате время индексации для больших
объемов информации существенно сократилось.
- С помощью программы flmerge можно объединять сразу несколько
индексных файлов (ранее можно было только два).
- Формат выхода программы flsearch теперь можно расширить, задав
в командной строке опцию -e.
- Программа fldump теперь может выводить для данного индекса
простой список проиндексированных файлов (опция -c) и список
проиндексированных слов для данного проиндексированного файла (опция
-n; имя файла (или URL), указанного при этой опции, должно в точности
совпадать с каким-нибудь именем, хранимым в индексном файле). Также можно
подавить выдачу данных заголовка индексного файла (опция -h).
- Размер индексного файла в этой версии минимален. Дальнейшее развитие
поисковой системы будет приводить только к его росту.
- Исходные тексты библиотек и исполняемых модулей переписаны таким образом,
чтобы было возможным их использование в многопоточной среде.
- Добавлен Makefile для компиляции под MSVC++ 5.0 (makefile.vc5).
- Примеры и документация переписаны с учетом новых возможностей (версия
документации не изменилась, так как ничего особо нового в нее не добавлено).
Важно отметить произошедшие изменения с точки зрения пользователя поисковой
системы:
- во всех директивах конфигурационных
файлов системы необходимо экранировать обратный слэш при указании имен
файлов или директорий (мои извинения пользователям MS Windows 95/98/NT);
- существенно изменился конфигурационный файл
индексации;
- в конфигурационном файле CGI модуля директивы FormBG и SearchBG
переименованы в FormBackground и SearchBackground;
- отменены разные профильные файлы для различных моделей представления
результатов поиска в CGI модуле; если есть необходимость задания различного
формата для разных моделей, то можно использовать переменную профильных
файлов $MODEL_NUMBER
вкупе с оператором $if;
- в результативном профильном файле CGI модуля можно использовать
переменную $EXTRACT
в операторе $if для
проверки существования куска текста из индексируемого файла.
В ближайших планах - поддержка украинского и белорусского языков, а также
создание библиотеки для огранизации индивидуального поиска в индексных
файлах системы FLUIdS.