Библиотеки и исходные коды поисковой системы

Download source codes

см. порядок использования исходных текстов

см. что такое 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

wxWidgets

Кроссплатформенная оконная библиотека, доступная в исходных текстах (C++). Используется в оконной версии поисковой системы Интегра. Библиотека использует нативные контролы, поэтому сделанные на ее основе приложения выглядят привычно для пользователя. Благодаря полной поддержке Юникода (библиотека компилируется в разных вариантах, для ASCII и Unicode API) Бульдозер допускает свободное использование национальных символов вне зависимости от используемой пользователем локали, например Вы можете задавать иероглифические имена создаваемых индексов, работая с французской версией MS Windows.

www.wxwidgets.org
7-Zip

Замечательный архиватор 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

[Структура библиотеки LEM]

изменено 16-May-09

  © Mental Computing 2010