Efficient data structures for building a fast spell checker
I've encountered same problem, but took different approach.
You can construct some kind of "hash" function, which will for similar word give same or near number.

Problem is, that function which will give "good" result for words with inserting/removing, will give "bad" for transition, and vice versa.
Example: map letters to numbers, similar letter to adjacent numbers, and just sum them for every letter in word.
Then create hash-tables with sets for each key and find intersection for word.

May be some results can be achieved if we look at "space" оf words. X for changing letter, Y for adding/removing, Z for transition, or something like that.

However this is only abstract ideas, I haven't enough time to implement them.