2008/2/12, Serg Koren <skoren / comcast.net>: > oops i took the easy way and replied. sorry. > Thanks for the help/explanation. I was hoping there was a shorter/ > more efficient way than iterating maybe a nested hash of some sort. Nested Hashes would only help if you would know beforehand according to which criteria you want to split up your strings. If you are doing it on word basis you could do this require 'set' word_index = Hash.new {|h,k| h[k] = Set.new} x.each_key {|k| k.downcase.scan(/\w+/) {|wd| word_index[wd] << k}} Note though that you have to update word_index whenever x changes. Well, there are indexing structures optimized for text retrieval (your favorite search engine is using those). However, I have no idea whether there are libs that implement those in Ruby. You could try to check RAA at http://raa.ruby-lang.org/ for such libs. Kind regards robert -- use.inject do |as, often| as.you_can - without end