我正在编写一个过滤算法,它将用户输入作为关键字数组,比如
@keywords = ['news', 'TV show', 'games', 'IT']
并查询表,例如我数据库中的视频表。表中有一个字符串字段,其中包含几个用逗号分隔的标签。对于视频实例,如果其标签字段包含一个(或多个)关键字,则应返回它。我从类似的东西开始
@videos = []
@keywords.each |word| do
@videos.push(Video.where('tags LIKE ?', '%#{word}%'))
end
@videos = @videos.flatten
然后我发现,首先,它会包含重复的视频,其次,它查询数据库的次数与关键字的长度一样多,这根本没有效率。
有什么建议可以改进吗?