Typing error handling n-gram character index and vector space model
Trigram models can be more powerful for document retrieval than unigram models, but if you want to handle spelling errors, they will not be of much help.  You need some form of fuzzy matching for that.

For example the string, "I like dosg too" would fool a unigram model because "dosg" is likely "dogs" misspelled, and it will encode it as "dosg" : 1.  But you have the same problem in a trigram model.  It will encode "I like dosg" : 1, "like dosg too" : 1.  Which is not really better, as it will still not match any trigrams with the word "dogs" in it.