如何在 neo4j/py2neo/python 中优化 store/access 节点 ID?

How to best store/access node id's in neo4j/py2neo/python?

一般来说,我是 neo4j 和图形数据库的新手,所以这可能是一个愚蠢的问题,但是通过 id 引用节点的最佳方式是什么,或者在它们之间形成关系的最佳方式是什么现有节点和最近插入的节点?[​​=13=]

现在,我在我的图表中有一个关键字列表作为单独的节点,我正在收集传入的推文,然后在用户、推文和跟踪的关键字之间建立关系。为了通过 id 在本地存储关键字节点,我使用了一个字典,以关键字作为键,节点 id 作为值,以填充此密码查询:

RELATE_TWEET_TO_KEYWORD = """\
MATCH (a:Tweet), (b:Keyword)
WHERE a.id = {tweet_id} AND id(b) = {keyword_id}
CREATE (a)-[r:REFERENCED]->(b)
RETURN r
"""

关键字很少更新,所以我只是有一个周期性的芹菜任务,每周腌制更新的关键字词典。

有没有更好或更有效的方法来做到这一点?我还试图尽量减少对服务器的调用。

谢谢。

您可以在节点 属性 上创建一个 node property uniqueness constraint 来断言该值是唯一的并将其视为一个 ID。您不应在外部系统中使用 Neo4j 内部 ID,因为如果删除节点,可以回收该 ID。

例如:

CREATE CONSTAINT ON (k:Keyword) ASSERT k.word IS UNIQUE;

然后您可以将 word 属性 视为关键字节点的唯一 ID。这也会在唯一 属性 上创建一个索引,确保 属性 的查找是有效的。