Neo4J节点ID是否针对访问进行了优化?

时间:2013-06-08 22:14:23

标签: indexing neo4j nodes

我正在使用neo4j构建一个大型图形数据库。

我有自己的外部索引,它为我提供了用于进一步neo4j图遍历的相关节点的标识符。换句话说,当我查询数据库时,我已经拥有了我的起始节点ID。

我的问题是:如果我使用neo4j / lucene索引访问相关节点,节点查找会更快吗?

或者是查询,例如:

START n=node({ids})

已针对节点访问进行了优化,使用以下方法无法获得:

START n=node:nodeIndexName(key={value})

谢谢,

1 个答案:

答案 0 :(得分:6)

是。 Neo4j针对节点ID进行了优化,因为在持久性级别,所有节点都是块,因此访问节点100就像访问块100一样。

我会警告你,如果删除它,Neo4j不保证节点ID。 Neo4j收回了ID。因此,如果在您的数据库生命周期中删除并添加多个节点,则您的外部条目可能是有效的"但不是你期望的。

//编辑:另外,为什么不使用Lucene来执行查找?当然,访问节点ID的速度更快,但这是Lucene在进行查找时在封面下所做的事情,因此key:name, value:frank将返回node id 5123并且neo4j将返回与之对应的节点ID。