发现错误:使用图数据库服务API而不是休息

时间:2014-11-20 06:58:00

标签: neo4j

尊敬的先生/女士,

我创建了下面给出输入列表的图表。在找到F和I之间的路径时,通过H,它将进入无限循环。我没有得到理想的道路。它还包含循环路径。我还没有从任何其他网站得到答案。所以我在这里发布这个问题。

代码:

create (A:_schema_A)
create (B:_schema_B)
create (C:_schema_C)
create (D:_schema_D)
create (E:_schema_E)
create (F:_schema_F)
create (G:_schema_G)
create (H:_schema_H)
create (I:_schema_I)
create (J:_schema_J)

CREATE (A)-[:HAS]->(B)
CREATE (A)-[:HAS]->(C)
CREATE (A)-[:HAS]->(D)

CREATE (B)-[:HAS]->(D)
CREATE (B)-[:HAS]->(E)

CREATE (C)-[:HAS]->(D)
CREATE (C)-[:HAS]->(F)

CREATE (D)-[:HAS]->(E)
CREATE (D)-[:HAS]->(F)
CREATE (D)-[:HAS]->(G)

CREATE (E)-[:HAS]->(G)
CREATE (E)-[:HAS]->(H)

CREATE (F)-[:HAS]->(G)
CREATE (F)-[:HAS]->(I)

CREATE (G)-[:HAS]->(H) 
CREATE (G)-[:HAS]->(I)
CREATE (G)-[:HAS]->(J)

CREATE (H)-[:HAS]->(B)
CREATE (H)-[:HAS]->(J)

CREATE (I)-[:HAS]->(C)
CREATE (I)-[:HAS]->(J)

RETURN A;    

感谢!!!

1 个答案:

答案 0 :(得分:2)

如果您正在寻找从F开始的最短路径,从I结束,但经过H,您可以查找:

(a) The shortest path(s) from F to H, and
(b) The shortest path(s) from H to I.

通过将(a)中的任何路径与(b)中的任何路径组合,您最终得到(最短路径)一条路径。

这是找到(a)和(b)的基本解决方案:

MATCH (F:_schema_F),(H:_schema_H),(I:_schema_I)
RETURN allShortestPaths((F)-->(H)), allShortestPaths((H)-->(I))

如果你有一个大图,你需要限制评估路径的长度,以避免长时间运行(或“永远”)。例如,要将搜索到的路径长度限制为6个关系,上面的查询将如下所示:

MATCH (F:_schema_F),(H:_schema_H),(I:_schema_I)
RETURN allShortestPaths((F)-[*..6]->(H)), allShortestPaths((H)-[*..6]->(I))

Here is a console显示后一个查询的结果。 (a)只有一条路径[有2个关系]。 (b)有3条路径[有4种关系]。