可以在Cypher中创建自定义功能吗?

时间:2013-12-03 14:53:49

标签: neo4j cypher

考虑Neo4J 2.0 Cypher查询

MERGE (u:User {id_str:"123"}) 
  ON CREATE 
    SET {giant_params_string_from_twitter_api}
  ON MATCH
    SET u.lastSeen = timestamp()
RETURN u

这里我从Twitter下载了用户的元数据,如果用户不存在,那么我会插入他的所有元数据。如果用户已经存在,那么我只是修改他的时间戳。

需要检索params的Twitter API的调用是漫长而昂贵的(特别是当你考虑到我不断受到速率限制时)。并且很多时候节点已经存在于数据库中。这是宁愿做的事情:

MERGE (u:User {id_str:"123"}) 
  ON CREATE 
    SET get_twitter_params("123")
  ON MATCH
    SET u.lastSeen = timestamp()
RETURN u

在ON CREATE中,我想以某种方式链接回一个回调来提取这些数据。

有没有办法调用创建我自己的函数在Cypher中使用?

2 个答案:

答案 0 :(得分:1)

还没有!他们正在考虑实现用户定义函数(UDF)的方法,所以我认为它不会太过分。

在向Twitter发出请求之前,您可能会考虑检查是否存在,如果这是一个昂贵的电话 - 很遗憾,您必须在单个Cypher请求之外执行此操作。

答案 1 :(得分:0)

从Neo4j 3.0开始,您现在可以编写自己的功能。然而,它们是用Java编写的。

请查看此链接以获取更多详细信息:https://neo4j.com/developer/procedures-functions/