The content recommendation system provides information on content the system believes the user will find interesting. Content recommendations are personalized for each user based on behavior and interactions with the site. In this way, content can be tailored to a user's specific interests and habits, resulting in greater content discovery capabilities. As the user continues to use the site, the recommendation system can further refine its recommendations for the user, offering even more applicable recommendations.
Content recommendations use a two-step process:
- Calculate similarity between content.
- Determine the recommendations for the current user.
Content recommendations use similarity factors such as likes and ratings, among others. The similarity calculation for all content is done once a day during off-peak hours via the Job Scheduler. (The job that does the calculation is the Telligent.Evolution.CoreServices.Recommendations.ContentRecommendationCalculationJob job in the tasks.config. It runs every night at 2 A.M by default.
To prevent old content from being recommended, the system only recommends content created in the last 14 days. That value can be changed in the job settings by adjusting the MaxContentAgeInDays value. (This is the first step of the content recommendation process.)
The second step occurs in real time when the system shows a user his or her recommendations. To retrieve recommendations, we first determine what content the user has interacted with and use that content to find similar content. We remove content from being recommended if the user has already interacted with it; viewed the content; doesn’t have permission to view the content; the content is abusive, or the user has selected to ignore the content (more on that soon).
By default only blog posts, forum threads, media files, and wiki pages will be recommended; user status, comments, and forum replies will not be recommended by the system.
To have their content automatically included in recommendations, third-party developers need only to ensure their content types are supported with an IContentType plugin. However, the default widget limits recommendations to out-of-the-box content types. To display custom content types, a custom widget must be created and retrieve the recommendations via the API.
Users can choose to ignore recommendations they are not interested in seeing. This will prevent that content from being recommended to the user again. The X in the following figure shows the user interface for ignoring content.
The recommendation system is not currently open for extensibility beyond its ability to recommend third-party content types with a supporting IContentType plugin and retrieving recommendations via the APIs.