Создайте хеш с каждым действительным ключевым словом в качестве ключа.
keywords = %w[foo bar baz]
keywords_hash = Hash[keywords.map{|k|[k,true]}]
Если все ключевые слова состоят из 3 или более букв и состоят из буквенно-цифровых символов или тире, регистр не имеет значения, и вам нужно только каждое ключевое словоприсутствует в тексте, возвращаемом один раз:
keywords_in_text = text.downcase.scan(/[[:alnum:][-]]{3,}/).select { |word|
keywords_hash.has_key? word
}.uniq
Это должно быть достаточно эффективным, даже если текст для поиска и список допустимых ключевых слов очень велики.