小编Ren*_*des的帖子

Rails:一个很好的搜索算法

我试图更像搜索结果返回结果

我的算法就是这个

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
Run Code Online (Sandbox Code Playgroud)

如果我搜索"Ruby on Rails",它将进行4种搜索方式.

1)删除左侧字母"uby on Rails".."ils" …

ruby search ruby-on-rails

0
推荐指数
1
解决办法
1993
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1

search ×1