Neo4j 找到链接时停止密码遍历

Neo4j 找到链接时停止密码遍历,neo4j,cypher,Neo4j,Cypher,举个例子:我试图找出哪些人认识n关系中的名人。 我的图形有两种类型的节点:NormalPerson,名人,它们都具有属性name。只有一种连接:知道 这是我用n=3编写的代码,它给出了所需的结果: MATCH (np:NormalPerson)-[:KNOWS*..3]-(c:Celebrity) RETURN DISTINCT(np.name) 问题是当n变大时,查询开始运行得非常慢。现在重要的是,我们不在乎名人知道什么,我们只想知道他们是否知道。这意味着一旦我们知道一个人认识一个名人,我们

举个例子:我试图找出哪些人认识
n
关系中的名人。 我的图形有两种类型的节点:
NormalPerson
名人
,它们都具有属性
name
。只有一种连接:
知道

这是我用
n
=3编写的代码,它给出了所需的结果:

MATCH (np:NormalPerson)-[:KNOWS*..3]-(c:Celebrity)
RETURN DISTINCT(np.name)
问题是当
n
变大时,查询开始运行得非常慢。现在重要的是,我们不在乎名人知道什么,我们只想知道他们是否知道。这意味着一旦我们知道一个人认识一个名人,我们就可以不再寻找更多的名人了。我希望这一推理可以节省时间,但我不确定如何实现这一点。我尝试了以下方法,但比前一种方法花费的时间更长:

MATCH (np:NormalPerson), (c:Celebrity)
WHERE EXISTS((np)-[:KNOWS*..3]-(c))
RETURN DISTINCT(np.name)

获得这些结果的最快方法是什么?

请给我们示例数据,您将获得的结果和预期结果。谢谢