我对neo4j和图形数据库一般都是新手,所以这可能是一个愚蠢的问题,但是通过id引用节点的最佳方法是什么,或者什么是形成现有关系的最佳方式节点和最近插入的节点?
现在,我的图表中有一个关键字列表作为单个节点,我正在收集传入的推文,然后在用户,推文和跟踪的关键字之间形成关系。为了通过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
"""
关键字很少更新,因此我只需要定期芹菜任务,每周都会更新一个更新的关键字词典。
有更好或更有效的方法吗?我也试图最小化对服务器的调用。
感谢。
答案 0 :(得分:2)
您可以在节点属性上创建node property uniqueness constraint以断言该值是唯一的,并将其视为ID。您不应在外部系统中使用Neo4j内部标识,因为如果删除节点,则可以回收该标识。
例如:
CREATE CONSTAINT ON (k:Keyword) ASSERT k.word IS UNIQUE;
然后,您可以将word
属性视为关键字节点的唯一ID。这还会在unique属性上创建一个索引,确保该属性的查找效率很高。