I'm delevoping an application where people with cognitive disabilities can look at pictures, watch videos,... and can interact with them. User have profiles with certain info(e.g. name, interests) and there are sessions, where a user can look at those media files. With neo4j i want to implement a simple recommender system to recommend certain media files based on their interests in certain topics and the shown interest during a session.
I never use Neo4j before and so i'm a little bit unsure whether to only use neo4j to store all the data (patients, sessions, items, interests,...) or if there are some disadvantages?
I'd be really glad if someone could help me with that
Neo4j is designed to handle information where relationships and their data give meaning to a context.
Recommendation systems are one of them.
In neo4j it is not convenient to store long texts and you cannot insert files (blobs).
The way you create nodes and relationships is fundamental to the questions you are supposed to ask.
Thank you for your fast reply!
I don't intend to save files in the database, but just the path to the files, so that shoudn't be a problem.
The important nodes for my recommender systems are person, item( info about media file) and tag (e.g. cat, holiday,...). A person rates an item and a person has interest in a tag. And a tag descripes the tag.
beside that, i need to store more info about the person, sessions, tags and items. so items can have multiple tags but there will also be an classification label for images (e.g. cat, dog, house). I want to store how long a session lasted, what pictures the person was most interested in...
Thats why i'm thinking about whether to store all data in neo4j or have a neo4j database for the recommender system and a sql database for the other data
From my point of view the big problem is to choose whether the tags are nodes (like the category in Amazon) or are property of an article.
I'm working on something public and open-source, that is very similar. It's not quite ready for prime time, but:
As an alternative architecture you might envisage an RDF based aproach. With neo4j you have a rock solid, fast database.