我一直在尝试使用neo4jphp为我们的新模块创建节点和关系[https://github.com/jadell/neo4jphp/wiki].
我使用cypher查询实现同样的功能。
$queryNodes = "CREATE (n:User { props } ) ";
$query = new Everyman\Neo4j\Cypher\Query($client, $queryNodes, array('props' => $arrNodeProperties));
$result = $query->getResultSet();
$queryRelations = "
MATCH (authUser: User { userid: 0001 }),(friend)
WHERE friend.userid IN ['" . implode("','",$relations) . "']
CREATE UNIQUE (authUser)-[r:KNOWS { connection: 'user_friend' }]->(friend)";
到目前为止,节点创建工作在gr8中。
但是,当我尝试为节点创建独特的关系时,它花费的时间太长。。。。
注意:标签用户有唯一的约束userid,因此带有标签用户的节点由属性userid上的Neo4j索引。
CREATE CONSTRAINT ON (user:User) ASSERT user.userid IS UNIQUE
最后我算出来了,几乎没有什么变化。。。
谢谢@MichaelHunger的帮助。
这就是我是怎么做到的。。。
$queryNodes = "
FOREACH (nodeData IN {nodeProperties}|
MERGE (n:User { userid: nodeData.userid })
ON CREATE SET
n.login = nodeData.login,
n.userid = nodeData.userid,
n.username = nodeData.username,
n.name = nodeData.name,
n.gender = nodeData.gender,
n.profile_pic = nodeData.profile_pic,
n.create_date = timestamp()
ON MATCH SET
n.update_date = timestamp()
)
";
$query = new Everyman\Neo4j\Cypher\Query($client, $queryNodes, array('nodeProperties' => $arrNodeProperties));
$result = $query->getResultSet();
$queryRelations = "
MATCH (authUser: User { userid: {authUserid} }), (friend:User)
WHERE friend.userid IN {friendUserIds}
CREATE UNIQUE (authUser)-[r:KNOWS { connection: 'user_friend' }]->(friend)
";
$query = new Everyman\Neo4j\Cypher\Query($client, $queryRelations, array('friendUserIds' => $arrFriendUserId, 'authUserid' => $authUserid));
$result = $query->getResultSet();
如果我们能进一步改进,请评论。
您可以尝试使用MERGE
而不是CREATE UNIQUE
。另外,对fried的列表使用Cypher参数,而不是在客户端连接,请参阅http://docs.neo4j.org/chunked/stable/cypher-parameters.html
附加信息-节点数(a类)-1791节点数(b类)-3341 有没有更快的方法来加载这个,加载csv操作需要这么多时间?我是不是哪里搞错了?
问题内容: 我有一本书得很长。我使用setText()方法在JTextArea中显示它。它冻结了UI,并花费大量时间。我该如何解决? 这是SSCCE: 问题答案: 在与构造GUI分开的单独线程中创建DefaultStyledDocument似乎是创建巨大文本区域的最快方法。DefaultStyledDocument是线程安全的。 这是我用来测试DefaultStyledDocument的代码。我用
问题内容: SQL: 用户索引: 个人资料索引 解释 : 上面的查询大约需要0.1221 我怎样才能使其运行更快? 问题答案: 我删除了此查询,因此搜索完成后不会显示总结果数。 似乎是临时解决方案,甚至是永久解决方案。
我正在尝试训练一个模型,在我看来,与其他数据集相比,该模型花费的时间太长,因为完成一个历元需要大约1小时和20分钟。我认为问题是因为数据集没有存储在ram上,但我不确定这一点。 代码如下: 型号: 顺序模型 2个卷积层,32个神经元,激活=relu 1个卷积层,64个神经元,激活=relu 平整和致密层,激活=relu 退出0.5 具有sigmoid激活的输出层(致密) Adam optimize
我希望它创建每个节点(而不是在已经存在具有相同ID的节点时创建新节点),并创建每个关系(在CSV中指定具有多个关系的节点中有多个关系from/to节点)。 实际发生的情况:它似乎创建了所有唯一的节点。它还创建了节点之间的关系,但它只为每个节点设置一个关系,而不考虑与多个其他节点进行通信的一些节点。 我很困惑,因为我的理解是,如果在数据库中还没有出现关系,它将创建关系,所以我认为它将创建CSV中指定
我开始将Neo4J与Spring数据Rest一起使用。我有一个用于建模节点和边的节点实体和关系实体。我能够使用postman创建具有以下内容的新节点。 我不确定创建节点之间关系的JSON格式是什么。例如: 创建新节点并与现有节点关联 任何关于我需要使用什么JSON的例子都将不胜感激。 我的节点实体和关系实体如下: