Didn't we already solve this problem?
Surely the way to handle such things is to have the index database broken into chunks and delivered a few meg at a time to every client on the network so that each client hosts a part of it. Isn't that what eMule / Kad / etc. used to do? You start a client, it fires off a few "hello, anyone else out there?" requests, hits a few other running clients, gets their parts of the index, plus a list of _their_ known clients, hits up _those_ clients, gets a few more chunks of index etc. etc. etc.