「第11回 Kansai.pm / スペルミス修正プログラムを作ろう - naoyaのはてなダイアリー」を読んで、面白そうだし、なんだか作れそうな気がした。 処理の概要はこんな感じ。 入力されたキーワードに対して、正しいスペルの候補を返す。 正しいスペルの候補ははてなキーワードのリストをから探す。 実装の概要はこんな感じ。 はてなキーワードのリストからN-gram(今回はbi-gram)インデックスを作成する。 インデックスから正解の候補を探す。 見つかった候補のJaroWinkler距離を求めて、距離の近いものを返す。 いろいろ調べてみると Lucene に以下のようなクラスがあった。 NGramTokenizer JaroWinklerDistance LevensteinDistance 名前の通りのクラス。素晴らしい素晴らしい。 N-Gram や JaroWinklerDistan