The recommendation engines in Mahout can be built with the org.apache.mahout.cf.taste package, which was formerly a separate project called Taste, and has continued to be developed in Mahout.
A Mahout-based collaborative filtering engine takes the users' preferences for items (tastes) and returns the estimated preferences for other items. For example, a site that sells books or CDs could easily use Mahout to figure out the CDs that a customer might be interested in listening to, with the help of previous purchase data.
Top-level packages define the Mahout interfaces to the following key abstractions:
- DataModel: This represents a repository of information about users and their preferences for items
- UserSimilarity: This defines a notion of similarity between two users
- ItemSimilarity: This defines a notion of similarity between two items
- UserNeighborhood: This computes neighboring users for a given user
- Recommender: This recommends items for the user
A general structure of the preceding concepts is shown in the following diagram: