Using publication

This pull request includes the end-to-end process of having the recommendation engine use publication as well as keywords, with easy extensibility for future article attributes as well. This also includes some elements of the code review from Jeffrey.