см. порядок использования исходных текстов ►
см. что такое open source (открытые исходные коды)? ►
После выгрузки исходников поисковой системы необходимо выполнить некоторые действия для компиляции вспомогательных программ и поисковых утилит - подробнее об этом в разделе Bootstrapping.
Вместо выгрузки исходных текстов можно получить исполняемые файлы.
Кроме исходников, которые Вы можете скачать непосредственно с этого сайта, используются библиотеки (доступны бесплатно, многие в исходных кодах):
| Название | Назначение | Где искать |
| BOOST C++ |
Контейнеры, обобщенные алгоритмы, метапрограммирование (см. краткую документацию) |
www.boost.org |
| STL |
Standard Template Library - стандартная библиотека шаблонов (см. краткую документацию) |
www.stlport.org |
| IBM ICU |
Internationalization Classes for Unicode - очень мощная поддержка Unicode, огромное количество поддерживаемых кодировок, функции для работы со строками с учетом специфики естественных языков (лигатуры, диактрические знаки и т.д.). |
www.ibm.com/software/globalization/icu/downloads.jsp |
|
|
SQLite - встраиваемый кроссплатформенный движок реляционной СУБД с поддержкой языка SQL, хранением данных в одном файле, настоящими транзакциями и очень простым API. Доступен в исходных текстах (чистый C). Используется как back-end хранилище индексатора. На самом деле движок потрясающе "вкусен" в плане возможностей, чего стоит поддержка журнала транзакций, позволяющая откатить транзакцию в случае аварийного завершения программы после ее перезапуска! |
www.sqlite.org |
|
|
Кроссплатформенная оконная библиотека, доступная в исходных текстах (C++). Используется в оконной версии поисковой системы Интегра. Библиотека использует нативные контролы, поэтому сделанные на ее основе приложения выглядят привычно для пользователя. Благодаря полной поддержке Юникода (библиотека компилируется в разных вариантах, для ASCII и Unicode API) Бульдозер допускает свободное использование национальных символов вне зависимости от используемой пользователем локали, например Вы можете задавать иероглифические имена создаваемых индексов, работая с французской версией MS Windows. |
www.wxwidgets.org |
|
Замечательный архиватор 7zip, используется в плагинах для работы с архивами нескольких форматов. Кроме того, этот архиватор (с графическим фронтэндом) я использую для упаковки исходников и некоторых бинарных модулей для опубликования на SourceForge. |
http://www.7-zip.org |
|
RAR |
Отличный архиватор. В плагинах используется бесплатно доступная DLL для распаковки архивов этого формата. |
http://www.rarsoft.com |
|
BZip2 - упаковщик со своим форматом сжатия, более известный пользователям Linux, а также его API libbzip2. В полном соответствии в догмами Unix-way этот упаковщик не умеет архивировать, то есть помещать несколько файлов в один упакованный архив. |
http://www.bzip.org | |
| CWebPage |
IE-контрол для отображения HTML контента. Прелесть этой реализации в том, что весь код компилируется как обычная DLL с предельно простым функциалом, не требуя использования никаких монстров типа MFC. Вся кухня COM-интерфейсов спрятана в коде, а наружу выведены несколько процедурных вызовов, благодаря которым этот контрол удалось привязать даже к библиотеке wxWidgets. |
http://www.codeproject.com/com/cwebpage.asp |
| SHTTPD |
Простой, многопоточный веб-сервер, с помощью которого в поисковые утилиты встроена возможность управления через веб-интерфейс. Позволяет генерировать запрашиваемые веб-страницы "на лету", таким образом используя привычную среду C/C++ framework'а без перехода на уровень CGI под более мощными веб серверами. |
http://shttpd.sourceforge.net |
| XPdf |
Вьювер Adobe PDF файлов. После некоторой модификации исходников можно получить утилиту для выделения текста (причем в Unicode) из PDF документов. Без модификаций библиотека возвращает извлекаемую кириллицу в KOI8. |
http://www.foolabs.com/xpdf |
| Info-Zip |
Библиотека для работа с ZIP архивами |
http://sourceforge.net/projects/infozip/ |
|
Библиотека для доступа к тэгам в аудиофайлах формата Ogg |
http://vorbis.com | |
| Imagine | Мультиформатный бесплатный и очень компактный графический вьювер. © Chun Sejin | http://www.nyam.pe.kr/ |
| OpenOffice.org HTML Viewer | Плагин для Total Commander для просмотра документов формата OpenOffice и FictionBook. © Алексей Торгашин | http://atorg.net.ru |
| DjVuLibre | Библиотека для работы с документами в формате DjVu | http://djvu.sourceforge.net |
| WinDjView | Вьювер документов формата DjVu | http://sourceforge.net/project/showfiles.php?group_id=114927 |
| CuneiForm | Омнифонтная OCR система | www.cuneiform.ru |
Из библиотеки BOOST используются следующие части: regex - регулярные выражения, Filesystem - портабельная работа с каталогами, именами файлов, signal - делегаты, Integers - аккуратная работа с целочисленными типами. По внутренним технологическим причинам используются только исходные тексты частей библиотеки BOOST, поэтому lib-файлы не нужны. К сожалению, некоторые компиляторы плохо уживаются с отдельными частями Boost'а. К примеру, по этой причине пришлось отказаться от использования кортежей boost::tuple<>, так как компилятор Borland аварийно завершал свою работу на некоторых фрагментах кода. А компилятор MinGW категорически не захотел компилировать код с использованием boost::wregex, так как он по умолчанию не соддержит поддержки std::wstring, и даже после перекомпиляции стандартной библиотеки с поддержкой std::wstring BOOST отказывается признать право wregex на существование.
Проект компилируется с версией Boost 1.33. Более ранние релизы (по крайней мере 1.31) также подойдут, но из-за изменений в составе файлов исходных текстов самих библиотек в Boost придется корректировать проекты.
Библиотека STL отдельно нужна только для компиляции в MinGW. Причина тому кроется в урезанности штатной библиотеки STL этого компилятора - там нет поддержки wstring'а. Прочие использованные компиляторы имеют вполне приличные реализации STL в своем составе.
Библиотека IBM ICU используется в случае, если компиляция сконфигурирована соответствующим образом.
Для компиляции программ требуются некоторые другие библиотеки в исходных кодах, которые уже включены в состав LEM (в основном это работа с архивами), и Вам не нужно их скачивать отдельно. Вот их перечень (неполный):
В чужих исходниках сохранены все пометки об авторстве, хотя сам код местами был подправлен (для интеграции в поисковый движок). В частности, почти везде чужой код был включен в индивидуальные пространства имен (только 7zip уже спроектирован хорошо в этом смысле), иногда были переименованы файлы.
Нельзя также не отметить некоторые применяемые утилиты, для которых также доступны исходные тексты.
Для создания инсталляторов используется пакет Nullsoft Scriptable Install System (NSIS) с графическим фронтэндом http://nsis.sourceforge.net/ см. также статью в Википедии.
Разумеется, применяется компилятор C++ в составе Gnu Compiler Collection http://gcc.gnu.org/ и статья в Википедии.
Для проверки работы поискового движка с веб-сервером, а также для текущей работы с сайтом, используется замечательный пакет Денвер http://www.denwer.org
изменено 16-May-09
© Mental Computing 2010