CREATE (alice:User{name:'Alice'})
CREATE (bob:User{name:'Bob'})
CREATE (eve:User{name:'Eve'})
CREATE (mallory:User {name:'Mallory'})
CREATE (peggy:User{name:'Peggy'})
CREATE (java:Product{name:'Java'})
CREATE (cpp:Product {name:'C++'})
CREATE (python:Product {name:'Python'})
CREATE (ruby:Product {name:'Ruby'})
CREATE alice-[:FRIEND_OF]->bob
CREATE alice-[:FRIEND_OF]->eve
CREATE alice-[:FRIEND_OF]->mallory
CREATE alice-[:FRIEND_OF]->peggy
CREATE bob<-[:REVIEWED_BY]-java
CREATE bob<-[:REVIEWED_BY]-cpp
CREATE eve<-[:REVIEWED_BY]-java
CREATE eve<-[:REVIEWED_BY]-cpp
CREATE eve<-[:REVIEWED_BY]-python
CREATE mallory<-[:REVIEWED_BY]-pyhon
CREATE peggy<-[:REVIEWED_BY]-ruby
START user=node(*)
MATCH user:User-[:FRIEND_OF]-friends1:User<-[:REVIEWED_BY]-products:Product,
products:Product-[:REVIEWED_BY]->friends2:User
WITH user, products, collect(distinct id(friends1)) as f1, collect(distinct id(friends2)) as f2
WITH user, products, filter(x in f1 WHERE x in f2) as intersect
WITH user, products, count(products) as n, intersect, length(intersect) as intersect_cnt
WHERE intersect_cnt > 1 and n > 0
RETURN id(user) as user_id, n, id(products) as product_id, intersect as friends, intersect_cnt
ORDER BY n DESC, intersect_cnt DESC, product_id
LIMIT 25;
MATCH user:User-[:FRIEND_OF]-friends1:User<-[:REVIEWED_BY]-products:Product,
products:Product-[:REVIEWED_BY]->friends2:User
WHERE user.name='Alice'
WITH user, products, collect(distinct id(friends1)) as f1, collect(distinct id(friends2)) as f2
WITH user, products, filter(x in f1 WHERE x in f2) as intersect
WITH user, products, count(products) as n, intersect, length(intersect) as intersect_cnt
WHERE intersect_cnt > 1 and n > 0
RETURN id(user) as user_id, n, id(products) as product_id, intersect as friends, intersect_cnt
ORDER BY n DESC, intersect_cnt DESC, product_id
LIMIT 25;
please use the user_id of Alice
START user=node(1) MATCH user:User-[:FRIEND_OF]-friends1:User<-[:REVIEWED_BY]-products:Product, products:Product-[:REVIEWED_BY]->friends2:User WITH user, products, collect(distinct id(friends1)) as f1, collect(distinct id(friends2)) as f2 WITH user, products, filter(x in f1 WHERE x in f2) as intersect WITH user, products, count(products) as n, intersect, length(intersect) as intersect_cnt WHERE intersect_cnt > 1 and n > 0 RETURN id(user) as user_id, n, id(products) as product_id, intersect as friends, intersect_cnt ORDER BY n DESC, intersect_cnt DESC, product_id LIMIT 25;
please use the user_id of Alice
START user=node(1) MATCH user-[:FRIEND_OF]-friends1<-[:REVIEWED_BY]-products, products-[:REVIEWED_BY]->friends2 WITH user, products, collect(distinct id(friends1)) as f1, collect(distinct id(friends2)) as f2 WITH user, products, filter(x in f1 WHERE x in f2) as intersect WITH user, products, count(products) as n, intersect, length(intersect) as intersect_cnt WHERE intersect_cnt > 1 and n > 0 RETURN id(user) as user_id, n, id(products) as product_id, intersect as friends, intersect_cnt ORDER BY n DESC, intersect_cnt DESC, product_id LIMIT 25;