Neo4j 六度凯文培根

Neo4j 六度凯文培根,neo4j,cypher,Neo4j,Cypher,还有几篇关于凯文·培根学位的帖子,这些帖子上的答案与我在查阅之前的想法类似。但是很明显,从我得到的结果来看,我仍然在做一些错误的事情,并且随着我与Kevin Bacon的分离程度的增加,我的查询的性能会下降 以下是我的查询,以查找所有具有一个Kevin Bacon学位的演员: match p=(:Person {name:"Kevin Bacon"})-[:ACTED_IN*..2]-(:Person) return p 如果我理解正确,这相当于: match p=(:Person {name

还有几篇关于凯文·培根学位的帖子,这些帖子上的答案与我在查阅之前的想法类似。但是很明显,从我得到的结果来看,我仍然在做一些错误的事情,并且随着我与Kevin Bacon的分离程度的增加,我的查询的性能会下降

以下是我的查询,以查找所有具有一个Kevin Bacon学位的演员:

match p=(:Person {name:"Kevin Bacon"})-[:ACTED_IN*..2]-(:Person) return p
如果我理解正确,这相当于:

match p=(:Person {name:"Kevin Bacon"})-[:ACTED_IN]->()<-[:ACTED_IN]-(:Person) return p

match p=(:Person{name:“Kevin Bacon”})-[:ACTED_IN]->()这两个语句不相同:
[:ACTED_IN*.2]
遵循1到2个关系,而第二个语句恰好强制执行两个关系。(它们返回相同的值,因为在数据集中没有两个人节点直接连接到
:ACTED_)

没错,将有多条路径指向同一个端点节点。Cypher具有
最短路径
功能,请参阅


如果您想要更细粒度的控制,例如深度优先与广度优先,则需要使用Neo4j。

无论使用何种算法,使用同一起始节点多次调用
shortestPath
是否会重复大量工作?我正在寻找一种方法来构造查询,以便在查找所有n时创建搜索树n个关系中的ODE被重用,以确定到每个节点的最短路径。如果在Cypher中不可能做到这一点,可以使用REST traversal API完成吗?正如前面提到的,我将使用traversal API实现这一点,并使用非托管扩展公开此函数,以使客户端代码可以访问它。有两个travers我知道的REST traversal API。我可以使用REST traversal API,还是只使用Java traversal API来做我想做的事情?我想REST traversal太有限了,使用Java traversal API吧