Perhaps, I should of included in the original question...
The "auto complete" works over two queries.
The dataset on the first query doesn't change, however the facet results on the second query do.
The documents which I'm searching over for the actual auto complete are place names from around the world.
About 6 million in total.
A query comes in from the user, and I use the search string to check for all place names and known aliases (which is about 20million).
Once the server receives the response back from Solr, it then has to fire off another query back to Solr, in order to figure out the facet counts for each location. (The application is basically a mapper, where "entities" are tagged to specific geographical locations, so it is useful for the front end user, to have both auto complete and then counts of documents in that particular facet/location.
I'm thinking about dropping PHP for powering the auto complete, just due to the initial 50ms that my application takes to bootstrap itself.
Or perhaps I should just try and employ a more sophisticated cache for the first query, in order to check APC for strings which are less than three characters in length, and then start to check Solr for when the character length of the search string is 4 or more. (In fact, this sounds like a pretty reasonable solution).