If you're serious about actually implementing this sort of thing, you'll probably want to use a database back end with a GUI (with the ability to export to .txt or such) in order to provide the selection ability as well as the access limitations.
My first pass at a DB schema would be something like:
Level: Common/Educated/Esoteric/Secret
OR
HRanks: # of history ranks needed
Location: Kulthea (world-wide)/Emer/Jaiman/etc.
Topics: K'ta'viiri/Altha/Earthwardens/Jerak Arenreth/etc [This could be very long]
Access: Player/GM
[Any other searchable category should be listed here as well with a defined set of values.]
Event: Text of event here (this could be searchable too via the interface)
A lot of the work would be defining all the tag values and getting them associated with the text entries. The DB and UI itself could use MySQL/Java/Python and probably coded up in a few days at most by any decent programmer; refinements could of course take a long time.
Users would be listed in a separate table along with their permission level; again, easy to set up, but would then take a bit more work if the maintainer(s) wanted a GUI or such and not willing to type raw SQL at a command line.