I was doing something similar for a game that I was fooling around with at home. I wanted to find all of the possible 3-7 letter English words that could be made up from letters in a single 7-letter word. The algorithm that I used was:
- get all possible permutations of letters
- eliminate duplicates
- look up each possible word in the dictionary to see if it was a real word
The key to efficient searches was to keep the list in alphabetic order, make a rough guess at the starting point (based on the first letter of the word), and perform a binary search to locate the word.