Graph-Document-Recommendations

I want to build a Recommendation System to recommend products to users. This is for research purposes. The context-system the engine will be integrated in is also not build yet.

So right now I am starting the project, building kind of a E-Commerce Social-Network-Platform for research purposes.

To realize the recommendation system, I want to integrate Neo4j and Elasticsearch with each other. For the content based filtering part Elasticsearch should do its job nicely. For the collaborative filtering part I want to use the Graph in Neo4j.

I would like to ask you for some experience or suggestions about the following questions regarding this topic:

  1. Should I use another database as the main system storage and just use Neo4j to store recommendation data? Or is it a suggestive way to just store everything in the same graph?
  2. How would you determine which part of the recommendation computation should happen online in Realtime and which offline as a precomputation?
  3. Does anyone here have some experience with this kind of realization? What did your architecture look like?

Sorry, if this is a little vague described here and there. I am also new to this and want to expand my horizon.

Thanks alot for your help. I would be really happy to get some input here?

Cheers TJ

Topic recommender-system neo4j predictive-modeling machine-learning

Category Data Science


Why not using a Multi-Model DBMS like OrientDB (I'm the author) or any others? In this way, with just one system you can store documents and graphs together.

It would be: - much faster (because you avoid the double call to 2 systems where most of the times the 2nd call needs the output of the 1st call, so you pay a lot of latency) - easier to manage: one DBMS, one set of skills, in the case of commercial support, only one vendor

Following your use case, with a Multi-Model DBMS like OrientDB, you could start with a FULL-TEXT query (the underlying technology is Lucene, the same of Elastic Search) and then navigate the resulting graph.

Look at the Social Travel Agency example about how you can mix multiple models at the same time: https://orientdb.com/docs/3.0.x/gettingstarted/demodb/DemoDB-DataModel.html.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.