Have a datatype of song_tag that connects a Song to a Tag.

Have a datatype of favourite_song that connects a Song to a User.

To establish the top 3 Tags for the user, first load all of the User’s favourite songs, then do a search for song_tags [where the Song is in the list of users favourite songs]: grouped by ‘Tag’, with an aggregation of ‘Count’: sorted by Count, items until 3.

Search for song_tags
[Song is in users fav songs)

Group by Tag
[with aggregation of Count]

Sorted by Count
[descending ‘yes’]

Items until 3