This is method which creates an array of all possible consecutive substrings from from a string
def get_seperated_tokens(query)
result = []
length = query.split.count
tokens = query.downcase.strip.split(' ')
length.times do |i|
length.times do |j|
result << tokens[i..j].join(' ') if j >= i
end
end
result
end
To get a better idea I have added rspec for it
describe "#get_seperated_tokens" do
it "returns an array of seperated tokens" do
query = 'ruby is awesome'
result = ['ruby','is', 'awesome', 'ruby is', 'is awesome','ruby is awesome']
expect(get_seperated_tokens(query)).to include(*result)
end
it "returns an array of seperated tokens" do
query = 'red blue iphones'
result = ['red','blue', 'iphones', 'red blue', 'blue iphones','red blue iphones']
expect(get_seperated_tokens(query)).to include(*result)
end
end