【发布时间】:2013-07-31 18:19:03
【问题描述】:
我正在编写一个过滤算法,它将用户输入作为关键字数组,例如
@keywords = ['news', 'TV show', 'games', 'IT']
并查询表,例如我数据库中的视频表。表中有一个字符串字段,其中包含几个用逗号分隔的标签。对于视频实例,如果其标签字段包含一个(或多个)关键字,则应返回它。我从像
这样的东西开始@videos = []
@keywords.each |word| do
@videos.push(Video.where('tags LIKE ?', '%#{word}%'))
end
@videos = @videos.flatten
然后我发现,第一,它会包含重复的视频,第二,它查询数据库的次数与关键字的长度一样多,根本没有效率。
有什么改进的建议吗?
【问题讨论】:
标签: ruby-on-rails-3 algorithm search