我一直在努力寻找一种方法来找到两个节点之间的所有路径(最大长度),同时通过对将要探索的关系(通过它们的一个属性)进行排序来控制 Neo4j 的路径探索。
为了清楚起见,假设我想在两个节点之间找到 K 条最佳路径,直到最大长度为 M。查询将如下所示:
match (source{name:"source"}), (target{name:"target"}),
p = (source)-[*..M]->(target)
return p order by length(p) limit K;
到目前为止,一切都很好。但是可以说路径的关系有一个称为“优先级”的属性。我想要的是编写一个查询,告诉 Neo4j 在路径探索的每个步骤中应该首先探索哪些关系。
我知道当我使用 java 库和嵌入式数据库时,这是可能的(通过实现 PathExpander 接口并将其作为 Java 中 GraphAlgoFactory.allSimplePaths() 函数的输入)。但现在我试图找到一种方法,使用 Bolt 或 REST api 在服务器模式数据库访问中执行此操作。
有没有办法在服务器模式下做到这一点?或者在服务器模式下访问图形时使用 Java 库函数?