Making Recommender Systems More Knowledgeable: A Framework to Incorporate Side Information