Well, depending on the size of docid and orgid and the amount of ram you have available to use, you could simply use a hash table. Read everything into the hash table, and then query against the hash table. Of course, don't know how many lookups you have to make against this file nor how often this has to be run, and if it needs to be resident in memory or not.
Other options (as previously suggested) are to use a presisted DB. Most efficient way would be to read the file into the DB and truncate the file so that subsequent reads don't have to reread existing records. Plus your file remains manageable. Of course, a lot of questions arise if you try to do that. Ex: can you truncate the file? does another process expect the file to exist? how do you manage race conditions when you attempt to truncate? etc.
Using something like hsqldb or h2 would be great as they could be embedded in your app and you don't have to worry about having them installed independently. Of course, you need to provide a persistence space for them, or it doesn't do tremendous amount of help.