2

我正在开发 Neo4j 插件,需要按属性值检索关系。

我可以访问 Neo4j GraphDatabaseService,它有一个非常方便的方法GraphDatabaseService.findNode(Label label, String property , String value)

我正在寻找这种方法的对应关系,例如GraphDatabaseService.findRelationship(RelationshipType type, String property , String value).

这存在吗?它在路线图上吗?还有其他方法吗?

4

2 回答 2

1

目前,模式索引仅支持节点。

在没有周围节点的上下文的情况下,按值查找关系的用例是什么?

您可以通过 Java API 访问关系的手动索引,这非常好,因为您既可以通过属性找到关系,也可以在它们的任一端节点的上下文中找到关系。如果您为每个 rel 类型创建一个索引,那么对于具有许多关系的节点也可以通过传入开始或结束节点来过滤掉一些关系。这就是我在 APOC 过程库中添加的支持。

但是您必须手动将关系添加到该索引。

于 2016-06-22T07:55:25.193 回答
0

总结迈克尔和克里斯托夫的回答:

  • 未实现通过具有架构索引的属性值查找关系
  • 使用手动索引可以按属性查找关系
  • GraphAware 的 UUID Neo4j 插件就是为 UUID 做的(使用手动索引)

要通过 UUID 获取关系,代码如下:

public Relationship getRelByUuid(GraphDatabaseService database, String uuid) {
    UuidReader reader = new DefaultUuidReader(
        getStartedRuntime(database).getModule(UuidModule.class).getConfiguration(),
        database
    );
    return database.getRelationshipById(uuidReader.getRelationshipIdByUuid(uuid));
}
于 2016-06-22T13:28:28.707 回答