我正在使用neo4j构建一个大型图形数据库。
我有自己的外部索引,它为我提供了用于进一步neo4j图遍历的相关节点的标识符。换句话说,当我查询数据库时,我已经拥有了我的起始节点ID。
我的问题是:如果我使用neo4j / lucene索引访问相关节点,节点查找会更快吗?
或者是查询,例如:
START n=node({ids})
已针对节点访问进行了优化,使用以下方法无法获得:
START n=node:nodeIndexName(key={value})
谢谢,
答案 0 :(得分:6)
是。 Neo4j针对节点ID进行了优化,因为在持久性级别,所有节点都是块,因此访问节点100就像访问块100一样。
我会警告你,如果删除它,Neo4j不保证节点ID。 Neo4j收回了ID。因此,如果在您的数据库生命周期中删除并添加多个节点,则您的外部条目可能是有效的"但不是你期望的。
//编辑:另外,为什么不使用Lucene来执行查找?当然,访问节点ID的速度更快,但这是Lucene在进行查找时在封面下所做的事情,因此key:name, value:frank
将返回node id 5123
并且neo4j将返回与之对应的节点ID。