1. A computer implemented method of maintaining a phrase index for a plurality of documents in a document collection, the method comprising: providing a set of phrase posting lists, each phrase posting list associated with a phrase; establishing a plurality of segments, each segment associated with a subset of the plurality of the documents; periodically updating each segment by: for documents associated with the segment, identifying phrases contained in the document, and updating the phrase posting list for each such phrase to include the document; sharding the phrase posting lists for the identified phrases into a plurality of segment shards, each segment shard containing a disjoint subset of the list of documents in the segment that contain the phrase associated with the phrase posting list; associating each segment shard with an index shard, such that at least one index shard is associated with a plurality of segment shards, each index shard being served by an index server; determining a recently updated segment having updated segment shards; for at least one index shard being served: determining the index shard's associated updated segment shards, and merging the updated segment shards with the index shard to form an updated index shard; and replacing the index shard with the updated index shard.
5. The method of claim 1 , further comprising determining locations of segment shard files corresponding to the most recent version of each segment.