The zimwriterdb is a tool coded in C++ to create zim files. The articles for the files are read from a postgresql database. The schema for the database is documented in the zimwriter source. The current implementation has a abstraction for the data source, so that it will be possible to implement other data sources (as a replacement to the database) e.g. the file system.
Fulltext search index
The fulltext search, implemented in zimlib and used in zimreader, needs an index file. The index file is ZIM file with special articles in namespace X. The indexer, which creates that index file is implemented as a data source in zimwriter. It reads the articles from a zim file to create the full text index. To use it, pass -Z zimfile to the writer e.g. zimwriter -Z wikipedia-de.zim wikipedia-de-x.zim.