Rather than using a normal English dictionary to provide suggestions, a heuristic dictionary is used. The dictionary learns from new input rather than a predefined list. The basis of the concept is simple enough; whenever someone types in a query, a record is saved. If anyone else types in the same query later, the weight of the record for that query increases. The heaviest (most popular) records (search queries) are the ones that are the most likely to be suggested. Above that is spelling correction; the same type of thing used by applications like Microsoft Word. A spell checker is essentially an algorithm for comparing a word against a known list of correctly spelled words (ie., the dictionary). Rather than comparing the phrase to the English dictionary, we can compare it to our custom dictionary of all the popular things people are search for and see if we have a probable match.