дублирующийся код, sql код в контроллере (нужно использовать scope), ненужные операции над массивами (сколько раз сколько слов ищем), ранняя материализация результатов (объединение можно сделать средствами arel?)