Skip to content

Instantly share code, notes, and snippets.

@tomahock
Last active September 6, 2016 11:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomahock/443900f65589f8456a69f6b88afcb948 to your computer and use it in GitHub Desktop.
Save tomahock/443900f65589f8456a69f6b88afcb948 to your computer and use it in GitHub Desktop.
= Y
:neo4j-version: 2.3.0
:author: Tomahock
:twitter: @tomahock
:style: red:ARTICLE(desc) blue:SOURCE(desc) green:ARTICLE(desc)
== Introduction
Artigos - Vermelho
Sources - Azul
Tags - Verde
== Setup
//setup
//hide
[source,cypher]
----
CREATE
(:ARTICLE {solr_id:"510728189", score: 123456, sentiment: 123, desc: "Luisão fala mal do Benfica"}),
(:ARTICLE {solr_id:"510728190", score: 123466, sentiment: 123, desc: "Luisão Descontente no Benfica"}),
(:ARTICLE {solr_id:"510728191", score: 123476, sentiment: 123, desc: "Adrian fica no Sporting!"}),
(:ARTICLE {solr_id:"510728192", score: 123486, sentiment: 123, desc: "Jorge Jesus dá entrevista"}),
(:ARTICLE {solr_id:"510728193", score: 123486, sentiment: 123, desc: "Sporting Vence campeonato de Futsal"}),
(:SOURCE {solr_id:"510122639", desc:"Record"}),
(:SOURCE {solr_id:"510122640", desc:"Jogo"}),
(:SOURCE {solr_id:"510122641", desc:"Bola"}),
(:TAG {solr_id:"510122730", desc: "benfica"}),
(:TAG {solr_id:"510122731", desc: "futebol"}),
(:TAG {solr_id:"510122733", desc: "capitao"}),
(:TAG {solr_id:"510122734", desc: "sporting"}),
(:TAG {solr_id:"510122735", desc: "futsal"})
WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728189"}), (i:SOURCE {solr_id:"510122639"}) CREATE (e)<-[:PUBLISHED]-(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728190"}), (i:SOURCE {solr_id:"510122640"}) CREATE (e)<-[:PUBLISHED]-(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728191"}), (i:SOURCE {solr_id:"510122641"}) CREATE (e)<-[:PUBLISHED]-(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728192"}), (i:SOURCE {solr_id:"510122639"}) CREATE (e)<-[:PUBLISHED]-(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728189"}), (i:ARTICLE {solr_id:"510728190"}) CREATE (e)<-[:SIMILAR]-(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728189"}), (i:TAG {solr_id:"510122730"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728189"}), (i:TAG {solr_id:"510122731"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728189"}), (i:TAG {solr_id:"510122733"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728190"}), (i:TAG {solr_id:"510122730"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728190"}), (i:TAG {solr_id:"510122731"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728190"}), (i:TAG {solr_id:"510122733"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728191"}), (i:TAG {solr_id:"510122731"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728191"}), (i:TAG {solr_id:"510122733"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728191"}), (i:TAG {solr_id:"510122734"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728192"}), (i:TAG {solr_id:"510122731"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728192"}), (i:TAG {solr_id:"510122734"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728193"}), (i:TAG {solr_id:"510122735"}) CREATE (e)-[:HAS_TAG]->(i) WITH count(*) as dummy
MATCH (e:ARTICLE {solr_id:"510728193"}), (i:TAG {solr_id:"510122734"}) CREATE (e)-[:HAS_TAG]->(i)
----
== Geral
[source,cypher]
----
MATCH (n)-[r]->(e)
RETURN n, r, e
----
//graph_result
== Começando num artigo, quero similares
[source,cypher]
----
MATCH (n:ARTICLE {solr_id:'510728189'})-[r:SIMILAR]-(e:ARTICLE)
RETURN e
----
//graph_result
== Pegando numa TAG quero artigos ordenados por score
[source,cypher]
----
MATCH (n:TAG {solr_id:"510122733"})<-[r:HAS_TAG]->(e:ARTICLE)
RETURN e
ORDER BY e.score DESC
----
//graph_result
== Pegando num artigo, quero artigos recomendados baseados em tags e ordenado por scores
[source,cypher]
----
MATCH (n:ARTICLE {solr_id:'510728192'})-[r:HAS_TAG]->(t),
(t)<-[]-(m)
RETURN DISTINCT m
ORDER BY m.score DESC
----
//graph_result
== Pegando num artigo, quero artigos similares que não seja da mesma source
[source,cypher]
----
MATCH (n:ARTICLE {solr_id:'510728189'})<-[r:PUBLISHED]-(t),
(n)-[:SIMILAR]-(m)
OPTIONAL MATCH (m)<-[rel:PUBLISHED]-(t)
WHERE rel is null
RETURN DISTINCT m
ORDER BY m.score DESC
----
//graph_result
// optional Footer
---
Created by Tomahock - https://twitter.com/tomahock[Twitter]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment