API with 10,000 books (each averaging 50,000 reviews) that given a selected book, recommends books with one of two methods: Nearest Neighbors or Correlation Matrix Factorization.
prod url: books.bendevera.com
-
GET /api
- root route with constant response. -
GET /api/books
- route to get all books in the database. -
GET /api/books/<id>
- route to get an individual book by id. -
POST /api/recommend
- route to get book recommendations.- book_id | int | [1,10000] | "reference" book that is used to generate recommendations
- type | string | nearest/matrix/popularity | method used to generate recommendations
- install dependencies
pip install -r requirements.txt
- create postgres database
- set flask app
export FLASK_APP=manage.py
- initialize flask db and migrations folder
flask db init
- create first migration
flask migrate -m "message"
- upgrade db
flask db upgrade
- store all books using script in root directory
python store_books.py
- store all recommendations (preprocess for speed)
python store_recommendations.py both|mf|nn
- run app
flask run