Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Neo4j Cypher查询查找常见子项的速度较慢。最好的方法是什么?_Performance_Neo4j_Cypher - Fatal编程技术网

Performance Neo4j Cypher查询查找常见子项的速度较慢。最好的方法是什么?

Performance Neo4j Cypher查询查找常见子项的速度较慢。最好的方法是什么?,performance,neo4j,cypher,Performance,Neo4j,Cypher,我是Neo4j-2.1.6的新手。在我的图中,任何给定节点都可以有多个父节点和多个子节点,它们也是其他节点的父节点和子节点。我需要做的是找到那些父节点和子节点,这些父节点和子节点都有共同点。搜索的节点可以是距离其公共父节点或子节点一到数百个关系。所有节点都具有相同的标签 我正在使用下面的cypher查询,但是当添加多个节点时,查询速度非常慢。。。。我希望一次搜索20个或更多节点以查找它们的公共连接。我在这里搜索4个节点上的子节点: MATCH (n1)-[*]->(x), (n2)-[*]

我是Neo4j-2.1.6的新手。在我的图中,任何给定节点都可以有多个父节点和多个子节点,它们也是其他节点的父节点和子节点。我需要做的是找到那些父节点和子节点,这些父节点和子节点都有共同点。搜索的节点可以是距离其公共父节点或子节点一到数百个关系。所有节点都具有相同的标签

我正在使用下面的cypher查询,但是当添加多个节点时,查询速度非常慢。。。。我希望一次搜索20个或更多节点以查找它们的公共连接。我在这里搜索4个节点上的子节点:

MATCH (n1)-[*]->(x), (n2)-[*]->(x), (n3)-[*]->(x), (n4)-[*]->(x)
WHERE n1.name = "node1" AND n2.name ="node2" AND n3.name ="node3" AND n4.name ="node4"
RETURN DISTINCT x.name
我还有别的办法吗?
谢谢

添加标签,并确保在:Label(name)上有索引

e、 g.如果标签是
:节点

create index on :Node(name);

MATCH (n1:Node)-[*]->(x),(n2:Node)-[*]->(x),(n3:Node)-[*]->(x),(n4:Node)-[*]->(x)
USING INDEX n1:Node(name)
USING INDEX n2:Node(name)
USING INDEX n3:Node(name)
USING INDEX n4:Node(name)
WHERE n1.name = "node1" AND n2.name ="node2" AND n3.name ="node3" AND n4.name ="node4"
RETURN DISTINCT x.name
对于很长的路径,Cypher可能会有一些问题


如果这是图形中必须在毫秒内完成的频繁操作,我建议为用Java编写的Neo4j服务器创建一个服务器扩展。

非常感谢!现在只需要一小部分时间。长路径只是Cypher的一个弱点,还是Neo4j在总体上存在问题?只是2.1中基于规则的规划器的一个弱点。这将在2.2中发生变化(您也可以尝试使用cypher 2.1.1作为查询的前缀,然后看看会发生什么)