I'll just leave this here: http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search....
I also tried using a trie, but as the linked post states, they are only good for starts-with or ends-with searches. They can't be used for contains searches, i.e. "java