際際滷

際際滷Share a Scribd company logo
Costruiamo un motore di raccomandazione con Neo4J
Workshop 25/01/2018
Marco Liberati
@dej611
Piero Savastano
@_pieroit_
#Aperitech graph
-[:LOAD]->
 Graph database (written in Java)
 Schema-less
 Cypher query language
 ASCII art as query
 Pattern matching
(user :USER { name: Marco })
Cypher Node
Variabile
Label
Property
Value
-[action:TAGGED {when: 130 }] ->
Cypher Link/Relationship
Variabile
Label
Property
Value
MATCH (u:User)-[r:JOINED]->(m:Meetup)
Cypher Query
PATTERN MATCHING:
Descrivi uno o piu percorsi del grafo
in ASCII art.
Tutti i percorsi che rispettano il
criterio di forma (e non solo)
verranno presi da Neo4J a questo
punto
MATCH (u:User)-[r:JOINED]->(m:Meetup)
WHERE u.name = Marco
Cypher Query
Applica delle
condizioni alle
variabili
dichiarate sopra
PATTERN MATCHING:
Descrivi uno o piu percorsi del grafo
in ASCII art.
Tutti i percorsi che rispettano il
criterio di forma (e non solo)
verranno presi da Neo4J a questo
punto
MATCH (u:User)-[r:JOINED]->(m:Meetup)
WHERE u.name = Marco
RETURN u, r, m;
Cypher Query
Applica delle
condizioni alle
variabili
dichiarate sopra
Con return si
descrive cosa
mettere su
ogni riga dei
risultati
PATTERN MATCHING:
Descrivi uno o piu percorsi del grafo
in ASCII art.
Tutti i percorsi che rispettano il
criterio di forma (e non solo)
verranno presi da Neo4J a questo
punto
Cypher cheatsheet
https://neo4j.com/docs/cypher-refcard/current/
#Aperitech graph
Data Model:
Graph traversal
(u:User)-[r:JOINED]->(m:Meetup)
Get all users Get all meetups
Get all users Get all meetups
Get all meetups and their tags
Get all meetups and their tags
Get relations for a specific user
Get relations for a specific user
Get users joining a meetup
after 1 November 2017
Get users joining a meetup
after 1 November 2017
CALL db.[procedura]
CALL apoc.json.load .
Per vedere tutte quelle disponibili:
CALL dbms.procedures();
User functions / Procedures
MATCH (u:User)-[r:JOINED]->(m:Meetup)
WITH u, collect( m ) as meetups
Cypher Query 2
WITH permette di fermarsi e
calcolare valori aggregati.
Oppure coniugare pi湛 query
MATCH (u:User)-[r:JOINED]->(m:Meetup)
WITH u, collect( m ) as meetups
RETURN u, meetups
Cypher Query 2
WITH permette di fermarsi e
calcolare valori aggregati.
Oppure coniugare pi湛 query
RETURN pu嘆 accedere
alla nuova variabile
meetups. Non pu嘆 per嘆
accedere sopra il WITH
(i.e. r)
Get graph schema
Get the shortest path between two nodes
Get the shortest path between two nodes
Show top 5 Meetups by popularity
Show top 5 Meetups by popularity
Show top 10 users by partecipation
Show top 10 users by partecipation
Show top 10 users by interests
Show top 10 users by interests
What meetup should we suggest to Eros?
What meetup should we suggest to Eros?
Eros
What meetup should we suggest to Eros based on
topics he likes?
What meetup should we suggest to Eros based on
topics he likes?
Grazie :)

More Related Content

Costruiamo un motore di raccomandazione con Neo4J - Workshop 25/1/2018