views:

35

answers:

1

Hi.

I'm implementing a help system for my app. Its written in C and Gtk+. Help is divided on books. Each book is just a bunch of HTML pages with resource. The problem I've encountered is that each book is ~30M (using WebKit Gtk port to display it). After zipping it becomes ~7M, but opening document becomes extremely slow :( So I'm thinking about using some kind of library able to provide me with: full text search index creation, document listing, tree structure (a-la file system), and compression of course.

Any ideas on such thing?

P.S. Not all of the requirements are "must have", I'm still exploring this part and not sure that all of them are required, so if it'll miss something it'll be ok.

+1  A: 

SQLite supports compressed databases (readonly), and is ideal for a one user database.

However, you should think about the need to compress. Hard disks are so big these days that a 700MB library on a computer isn't too much of a worry.

Alternatively, you could go for Firebird, which as far as I know doesn't support a compressed database, but you could compress your individual pages, in which case you would need to build your own index for full-text search - which I would consider unnecessary work.

Firebird supports a feature called "Embedded Server" which is especially designed for deployment with Windows applications.

I think you should make an ordered list, of the features you want, then pick the top two or three, and do that before advancing on. E.g. getting it into a database is something you'd want to do, before you thought about compression.

Vincent McNabb
Didn't know that SQLite can work with compressed databases, but idea is interesting. Thank you for hint trying it :) Firebird is not the way because it requires server as I'm aware.
Daniel
Actually, Firebird doesn't require a server, just updated my answer.
Vincent McNabb
SQLite solved the issue :)
Daniel
I'm very interested in why the help system was so large... Were you the main writer, or were there many writers?
Vincent McNabb