Я пытаюсь вернуть результаты, более похожие на поиск
Мой текущий алгоритм такой
def search_conditions(column, q)
vars = []
vars2 = []
vars << q
if q.size > 3
(q.size-2).times do |i|
vars2 << q[i..(i+2)]
next if i == 0
vars << q[i..-1]
vars << q[0..(q.size-1-i)]
vars << q[i % 2 == 0 ? (i/2)..(q.size-(i/2)) : (i/2)..(q.size-1-(i/2))] if i > 1
end
end
query = "#{column} ILIKE ?"
vars = (vars+vars2).uniq
return [vars.map { query }.join(' OR ')] + vars.map { |x| "%#{x}%" }
end
Если я найду «Ruby on Rails», он найдет 4 способа поиска.
1) Удаление левых букв "uby on Rails" .. "ils"
2) Удаление нужных букв "Ruby on Rail" .. "Rub"
3) Удаление левой и правой букв "uby on Rails", "uby on Rail" ... "on"
4) Использование только 3 букв "Rub", "uby", "by", "y o", "on" ... "ils"
Хорошо ли использовать эти 4 способа? Там больше?