sudo port install aspell aspell-dict-en
Or, Ubuntu people:
sudo apt-get install aspell libaspell-dev aspell-en
sudo gem install raspell
Of course you shouldn’t install the gem without trusting me and/or auditing the source code, and also making sure your DNS isn’t poisoned with regard to the Rubyforge mirrors, and that the Rubyforge mirrors themselves haven’t been hacked.
spell.rb file for your app:
require 'rubygems' require 'raspell' module Spell SP = Aspell.new("en") SP.suggestion_mode = Aspell::NORMAL SP.set_option("ignore-case", "false") def self.correct string string.gsub(/[\w\']+/) do |word| not SP.check(word) and SP.suggest(word).first or word end end end
If you just need a “did you mean X” method, this is a great start. Of course sometimes Aspell gets it wrong. However, there are lots of options you can set, and different ways you can report the word possibilities, so you might be able to tune it to your specific situation.
Aspell supports custom wordlists and custom stemming and all kinds of cool stuff. Check the gem’s
README and Aspell’s manual for more details.