1

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

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

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

或者是诸如以下的查询:

START n=node({ids})

已经针对节点访问进行了优化,并且无法通过以下方式获得:

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

?

谢谢,

4

1 回答 1

6

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

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

//编辑:另外,为什么不直接使用 Lucene 来执行查找?当然访问节点 ID 更快,但这就是 Lucene 在您进行查找时所做的,所以key:name, value:frank会返回node id 5123,neo4j 将返回与该 ID 对应的节点。

于 2013-06-08T22:32:51.500 回答