20. A system comprising: one or more processors; and a memory coupled to the processors comprising instructions executable by the processors, the processors operable when executing the instructions to: receive, from a client device of a first user, a text string comprising one or more characters inputted by the first user; generate a set of suggested queries based on the text string, each suggested query in the set being based on a string generated by a grammar of a grammar model and comprising the text string of the query and one or more tokens inserted by the grammar model corresponding to one or more terms, respectively; calculate, for each suggested query in the set, a quality score based on an insertion cost of the one or more tokens of the suggested query inserted by the grammar model; filter the set to remove one or more suggested queries from the set based on the respective quality scores of the suggested queries; and send, to the client device, one or more of the suggested queries from the post-filtered set for presentation to the first user.
32. The system of claim 20 , wherein the quality score is further based on a language-model score of the suggested query, and wherein calculating the language-model score comprises, for each suggested query: for each query token of the suggested query, wherein the query token corresponds to at least a first portion of the text string, determining a probability that the query token pairs with one or more other query tokens of the suggested query that correspond to one or more second portions of the text string, wherein the one or more second portions are adjacent to the first portion in the text string; and calculating a language-model score based on the probabilities for each query token.