1. A system, comprising: one or more processors; and a computer-readable storage medium that is coupled to the one or more processors and that has instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations comprising: storing a plurality of documents in computer-readable memory, each document of the plurality of documents having a corresponding access control list (ACL), each ACL defining a plurality of users that are authorized to access a respective document; generating an index based on the plurality of users, the index comprising a plurality of partitions, each partition corresponding to a user of the plurality of users; and for each document of the plurality of documents: ranking the users of the plurality of users based on respective identifiers assigned to the users, the ranking comprising: receiving a plurality of identifiers based on users identified in a respective ACL; for each identifier in the plurality of identifiers, generating a corresponding hash value to provide a plurality of hash values; and ranking the plurality of hash values in order to provide a ranking; selecting a user as an indexing user based on the ranking; and storing the document in a partition of the plurality of partitions of the index, the partition corresponding to the indexing user.