Я пишу алгоритм фильтрации, который принимает входные данные пользователя как массив ключевых слов, какRails 3 несколько ключевых слов фильтрации запросов
@keywords = ['news', 'TV show', 'games', 'IT']
и запросить таблицу, например, видео таблицы в моей базе данных. В таблице есть строковое поле, которое включает пару тегов, разделенных запятой. Для экземпляра видео, если его поле тегов содержит одно (или несколько) ключевых слов, оно должно быть возвращено. Я начал с чем-то вроде
@videos = []
@keywords.each |word| do
@videos.push(Video.where('tags LIKE ?', '%#{word}%'))
end
@videos = @videos.flatten
Тогда я нашел, во-первых, он будет включать в себя дублированные видео, а во-вторых, он запрашивает базу данных столько раз, сколько длины ключевых слов, которые не является эффективным на всех.
Любые предложения по улучшению этого?