I think you should apply a combination of methods.
1) For the usual spelling variations, I would go with the vocabulary method. Since they are common, I would not worry about missing words without a dictionary. This should solve the color / color problem.
2) Metaphone (http://en.wikipedia.org/wiki/Metaphone) . , (, ). (, Huseyin Housein).
3) . , "John's" "John s" "Johns". " " ( ) " " " " .
4) , ββ HyphenationCompoundWordTokenFilterFactory Solr (http://lucene.apache.org/solr/api/org/apache/solr/analysis/HyphenationCompoundWordTokenFilterFactory.html). , . , . , ( ).
, . , . , Lucene ( Solr, Lucene), Java, ? , ; , , " " " " ( , ). , (http://lucene.apache.org/solr/api/org/apache/solr/analysis/PhoneticFilterFactory.html). FuzzyQuery, (http://lucene.apache.org/core/old_versioned_docs/versions/3_2_0/api/all/org/apache/lucene//FuzzyQuery.html)
, : , . , (- , ). - , , . . , , . , , -, .