レーベンシュタイン距離について説明していると思います。そして、はい、そのための宝石があります。純粋な Ruby に興味がある場合は、text gem を使用してください。
$ gem install text
詳細はドキュメントに記載されていますが、要点は次のとおりです。
Text::Levenshtein.distance('test', 'test') # => 0
Text::Levenshtein.distance('test', 'tent') # => 1
ネイティブ拡張でよければ...
$ gem install levenshtein
使い方は似ています。その性能は非常に優れています。(私のシステムでは、毎分最大 1000 のスペル修正を処理します。)
2 つの単語がどの程度似ているかを知る必要がある場合は、単語の長さよりも距離を使用します。
単純な類似性テストが必要な場合は、次のようなものを検討してください。
テストされていませんが、簡単です:
String.module_eval do
def similar?(other, threshold=2)
distance = Text::Levenshtein.distance(self, other)
distance <= threshold
end
end