1. A non-transitory computer readable medium comprising computer executable instructions stored thereon to cause one or more processing units of a processing device to: obtain a first plurality of unencrypted documents, wherein each document in the first plurality of unencrypted documents comprises: a Small Index of tags based, at least in part, on a content of the respective document; and a Large Index of tags based, at least in part, on a predictive analysis of the tags in the Small Index of the respective document; obtain a second encrypted document, wherein the second encrypted document comprises a Small Index of tags based, at least in part, on a content of the second encrypted document; create one or more associations between the second encrypted document and one or more documents of the first plurality of unencrypted documents based, at least in part, on the Small Index of tags of the second encrypted document and the respective Small Index of tags of the one or more of the first plurality of unencrypted documents; generate a Large Index of tags for the second encrypted document based, at least in part, on a predictive analysis of the tags in the Small Index of tags of the second encrypted document; augment the Large Index of tags for the second encrypted document based, at least in part, on the respective Large Index of tags for the one or more associated documents of the first plurality of unencrypted documents; receive a query from a first user, wherein the query matches at least one tag in the augmented Large Index of tags for the second encrypted document; and generate a result set of documents in response to the received query, wherein the result set comprises the second encrypted document.