rgrison / oracle-of-bacon

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Oracle of Bacon

Présentation

L'objectif de l'application est de déterminer le degré de séparation entre Kevin Bacon et un acteur donné via ses rôles dans les films.

Par exemple : Al Pacino

  • Al Pacino a joué dans Carlito’s Way avec Nelson Vasquez
  • Nelson Vasquez a joué dans The Guiding Light avec Kevin Bacon

Les modules

Le projet est réparti en deux modules :

Pour démarrer

Pour lancer le projet démarrez deux terminaux et positionnez-vous dans ce répertoire :

cd <path to directory oracle-of-bacon>

Dans le premier, lancez le frontend :

cd oracle-of-bacon-frontend
npm install
npm run dev

Dans le second, lancez le backend :

cd oracle-of-bacon-backend
./gradlew run

Rendez-vous sur a page http://localhost:8080.

Pour la suite du projet, nous vous conseillons d'importer le backend dans votre IDE/éditeur préféré. Sauf désir de créativité 😃, vous n'avez rien à faire dans le front-end.

Le data set

Les données sont des données qui proviennent de imdb, le dataset est disponible ici : http://bit.ly/imdbdataset

Votre mission

Le site a été bouchonné (cf TODO), vous devez effectuer les tâches suivantes :

  • Importer les données dans Neo4J à l'aide de l'outil d'import : ìmport-tool.
  • Implémenter l'Oracle de Bacon à l'aide de Neo4J dans la méthode com.serli.oracle.of.bacon.repository.Neo4JRepository#getConnectionsToKevinBacon
  • Implémenter la gestion du last 10 search à l'aide de Redis dans la méthode com.serli.oracle.of.bacon.repository.RedisRepository#getLastTenSearches
  • Importer les données à l'aide de ElasticSearch dans com.serli.oracle.of.bacon.loader.elasticsearch.CompletionLoader (les liens suivants pourront vous aider : search, mapping et suggest)
  • Implémenter la suggestion sur le nom des acteurs dans com.serli.oracle.of.bacon.repository.ElasticSearchRepository#getActorsSuggests
  • Implémenter la recherche des acteurs par nom à l'aide de MongoDB dans com.serli.oracle.of.bacon.repository.MongoDbRepository#getActorByName

L'évaluation de votre travail sera effectuée selon les critères suivants :

  • Bon fonctionnement (First make it work)
  • Qualité de la solution implémentée (Then make it good)
  • Qualité générale de votre code (et de vos commits, il ne faut pas pousser 😃)

La livraison de votre travail s'effectue à l'aide d'une pull-request sur le repository https://github.com/nosql-bootcamp/oracle-of-bacon.

**Vous devez commencer par forker le repository https://github.com/nosql-bootcamp/oracle-of-bacon**

Mémo

Import des données

Commande utilisée pour l'import : neo4j-import --nodes:Actor actors.csv --nodes:Movie movies.csv --relationships roles.csv --into $NEO4J_HOME/data/databases/imdb.db. Il faut penser à changer la BD utilisée dans la configuration de Neo4j (dans le fichier $NEO4J_HOME/conf/neo4j.conf : dbms.active_database=imdb.db).

Requête Neo4J

MATCH p = shortestPath((Kevin:Actor)-[*..10]-(Other:Actor {name: 'Aalto, Jaska'}))
WHERE Kevin.name CONTAINS 'Kevin' AND Kevin.name CONTAINS 'Bacon'
RETURN p

Création de l'index dans ElasticSearch pour la suggetion

PUT actors
{
  "mappings": {
    "_doc": {
      "properties": {
        "name_suggest": {
          "type": "completion"
        },
        "name": {
          "type": "text"
        }
      }
    }
  }
}

Recherche de suggestion dans Elastic

GET actors/_search
{
  "suggest": {
    "actors_completions": {
      "prefix": "John",
      "completion": {
        "field": "name_suggest",
        "size": 10
      }
    }
  }
}

About


Languages

Language:JavaScript 48.4%Language:Java 36.0%Language:Vue 15.1%Language:HTML 0.4%