Because you like “Hans Zimmer”, you may also like “Harry Gregson-Williams.” How did you know that Spotify??

Below I have outlined the first approach that comes to mind:

  1. Find all artists you like
  2. Find all users who like the same artists as you
  3. Find all artists those users like, but you haven’t liked yet

Here is a simplified database setup along with queries to determine this information.

users
-id

likes
-id
-user_id
-song_id

artists
-id

songs
-id
-artist_id

Find all artists USER likes:

Find all users who like the artists USER likes:

Find all artists the found users like but USER does not like (yet):

This is fairly limited in what it can tell us but could be extended to provide more information. For example:

  • count the likes for the artists
  • give higher weight to users whose tastes are most similar to USER
  • assign genres to songs
  • track how many times the users have listened to each song