Neo4j 如何处理密码错误:Neo.Client error.Statement.SyntaxError

Neo4j 如何处理密码错误:Neo.Client error.Statement.SyntaxError,neo4j,cypher,Neo4j,Cypher,我是Cypher的新手,我遇到了一个困扰我的问题。 如果我这样编码 MATCH (r:Researcher) OPTIONAL MATCH (r)-[:SUPERVISES]->(s:Student) WITH r, count(s) AS studentsSupervised MATCH (r)-[:AUTHORS]->(p1:Publication) OPTIONAL MATCH (p1)<-[:CITES*]-(p2:Publication) RETURN r.name,

我是Cypher的新手,我遇到了一个困扰我的问题。 如果我这样编码

MATCH (r:Researcher)
OPTIONAL MATCH (r)-[:SUPERVISES]->(s:Student)
WITH r, count(s) AS studentsSupervised
MATCH (r)-[:AUTHORS]->(p1:Publication)
OPTIONAL MATCH (p1)<-[:CITES*]-(p2:Publication)
RETURN r.name, studentsSupervised, count(DISTINCT p2) AS citedCount` 
匹配(r:研究人员)
可选匹配(r)-[:管理]->(s:学生)
在r的情况下,将数为受监督的学生
匹配(r)-[:作者]->(p1:出版物)
可选匹配(p1)(p1:发布)
可选匹配(r)-[:管理]->(s:学生)

可选匹配(p1)当您将
一起使用时,必须传递所有要在进一步查询中使用的变量。有关详细信息,请参阅

还要注意的是,
join
是用
with
传递的所有变量创建的。因此,在这里要小心,否则输出可能不是您想要的

请参阅下面的密码,我刚刚在
WITH
之后添加了
p2

MATCH (r:Researcher)
MATCH (r)-[:AUTHORS]->(p1:Publication)
OPTIONAL MATCH (r)-[:SUPERVISES]->(s:Student)
OPTIONAL MATCH (p1)<-[:CITES*]-(p2:Publication)
WITH r, count(s) AS studentsSupervised, p2
RETURN r.name, studentsSupervised, count(DISTINCT p2) AS citedCount
匹配(r:研究人员)
匹配(r)-[:作者]->(p1:出版物)
可选匹配(r)-[:管理]->(s:学生)

可选匹配(p1)当您将
一起使用时,必须传递所有要在进一步查询中使用的变量。有关详细信息,请参阅

还要注意的是,
join
是用
with
传递的所有变量创建的。因此,在这里要小心,否则输出可能不是您想要的

请参阅下面的密码,我刚刚在
WITH
之后添加了
p2

MATCH (r:Researcher)
MATCH (r)-[:AUTHORS]->(p1:Publication)
OPTIONAL MATCH (r)-[:SUPERVISES]->(s:Student)
OPTIONAL MATCH (p1)<-[:CITES*]-(p2:Publication)
WITH r, count(s) AS studentsSupervised, p2
RETURN r.name, studentsSupervised, count(DISTINCT p2) AS citedCount
匹配(r:研究人员)
匹配(r)-[:作者]->(p1:出版物)
可选匹配(r)-[:管理]->(s:学生)

可选匹配(p1)非常感谢!我还有一个问题,在哪里可以找到cypher的源代码?你说的cypher的源代码是什么意思?neo4j的源代码或neo4j在处理您的密码后生成的最终查询?neo4j的源代码。就像Hadoop是由Java构建的一样,我想知道你所说的neo4j的源代码或者只是“cypher”。@Frank cypher的文档相当广泛,应该可以满足你的大部分需求;也就是说,如果您想查看源代码,它可以在GitHub上找到。请注意,为了避免基数问题,最好尽量保持基数较低,如果需要聚合,请在匹配后尝试这样做。对于这个查询,最好先匹配并收集研究人员的学生,然后匹配引用的出版物。目前,受监督的学生人数将不正确。虽然可以使用
count(DISTINCT s)
对其进行更正,但在查询中更早地匹配并收集它们会更好地提高性能。如果您比较分析过的查询,并检查数据库命中率和操作之间的行流,您可以自己看到这一点。非常感谢!我还有一个问题,在哪里可以找到cypher的源代码?您所说的cypher源代码是什么意思?neo4j的源代码或neo4j在处理您的密码后生成的最终查询?neo4j的源代码。就像Hadoop是由Java构建的一样,我想知道你所说的neo4j的源代码或者只是“cypher”。@Frank cypher的文档相当广泛,应该可以满足你的大部分需求;也就是说,如果您想查看源代码,它可以在GitHub上找到。请注意,为了避免基数问题,最好尽量保持基数较低,如果需要聚合,请在匹配后尝试这样做。对于这个查询,最好先匹配并收集研究人员的学生,然后匹配引用的出版物。目前,受监督的学生人数将不正确。虽然可以使用
count(DISTINCT s)
对其进行更正,但在查询中更早地匹配并收集它们会更好地提高性能。如果您比较分析过的查询,并检查db命中率和操作之间的行流,您自己就可以看到这一点。