Rhyme Thesaurus
 
Use the Rhyme Thesaurus to find rhyming words. Just type in a word to the left, ex. "orange" er..., no, "mitten", and ask for the server to find a list of rhyming words.

How? We compare two widely known strategies, soundex and metaphone. Both algorithms take the same basic approach. Throw out the vowels except where they're the first letter and then reduce the remaining constants to a smaller set of symbols based on like phonetics. Here a dictionary has been produced (and stored in a mysql database) that has the soundex and metaphone values precomputed. We simply compute the symbols for the search word and look up close matches, particularly where the latter part of the reduced words match since, afterall, this is the rhyming thesaurus and not the alliteration thesaurus.

Compare these algorithms with a more naive approach of just searching for words with similar endings.

Finally, to weed out some words, try the Levenshtein filter. The Levenshtein algorithm measures the similarity between words by counting how many character substitutions would be necessary to convert the source word into the target word. Here the filter may be applied on all the characters in the word or only the vowels of the word.

Play around a bit. I think you'll find that no one strategy is perfect and that different search words respond better to different heuristics.




Levenshtein filter?
No
Yes, whole word
Yes, vowels only