Neo4j排序:我跟随谁,谁跟随我,其他人

Neo4j排序:我跟随谁,谁跟随我,其他人,neo4j,cypher,Neo4j,Cypher,让我们假设一个社交网络 ne4j控制台上的代码: 如何: 选择所有喜欢相册的人。 按我的朋友排序按我朋友的朋友排序之后,再按任何其他人排序 选择所有[:LIKE]我的相册订购依据 I-[:FOLLOW] p2-[:FOLLOW]->person-[:LIKE]->alb // friend of my friend person-[:LIKE]->alb //other 类似问题 [您需要使用可变长度的可选匹配,以了解您与相册中喜欢的人之间的距离,然后按距离排序: MATCH

让我们假设一个社交网络

ne4j控制台上的代码:

如何: 选择所有喜欢相册的人。 我的朋友排序按我朋友的朋友排序之后,再按任何其他人排序

选择所有[:LIKE]我的相册订购依据

I-[:FOLLOW]
p2-[:FOLLOW]->person-[:LIKE]->alb // friend of my friend
person-[:LIKE]->alb //other
类似问题
[

您需要使用可变长度的可选匹配,以了解您与相册中喜欢的人之间的距离,然后按距离排序:

MATCH (person)-[:LIKE]->(:ALBUM {name:"Férias"}), (me:PERSON {name:"Mateus"})
OPTIONAL MATCH p=(me)-[:FOLLOW*]->(person)
WITH person, coalesce(length(p), 9999) AS distance
RETURN person, distance
ORDER BY distance

coalesce
为您不直接或间接关注的每个人分配了一个高值9999。

控制台链接不起作用,我已经重新创建了控制台,我只是将*改为..2为什么如果我放置[:follow]它返回重复数据?匹配(person)-[:LIKE]>(:ALBUM{name:“Férias”}),(me:person{name:“Mateus”})可选匹配p=(me)-[:FOLLOW*.2]->(person)WITH person,coalesce(length(p),9999)作为距离返回人,按距离排序
MATCH (person)-[:LIKE]->(:ALBUM {name:"Férias"}), (me:PERSON {name:"Mateus"})
OPTIONAL MATCH p=(me)-[:FOLLOW*]->(person)
WITH person, coalesce(length(p), 9999) AS distance
RETURN person, distance
ORDER BY distance