JIRA-003 Designed Book recommendation system #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What?
Designed Book recommendation system. For more background, see ticket #JIRA-003.
Why?
This feature enhances the user book management experience, as the users are suggested similar books to the ones they like.
How?
This includes a migration for book ratings, rating controller, observer and new services for recommendation algorithms. Every time a user rates a book, RatingObserver dispatches a ProcessCreateRating job that calls the appropriate recommendation service to record that data. For those services, Strategy Pattern is used depending on which strategy/recommendation service should be used.
ContentBasedFilteringService
calls a third-party API, andCollaborativeFilteringService
uses built-in algorithms. To refresh book recommendations, a custom command is made that uses theRecommender
facade that builds the model, gets predictions, stores them etc.Anything else?
ProcessCreateRating is chosen to be a Job since those ratings should be done asynchronously and not stop the user from using the application.