Neo4j 如何计算标记之间的关系而不使其爆炸?

Neo4j 如何计算标记之间的关系而不使其爆炸?,neo4j,Neo4j,我使用的是neo4j,它存储了一个简单的“内容有很多标签”数据结构。 我想找出“哪些标签与其他标签共存最多?” 我有大约50万个内容要标记关系,所以不幸的是,这相当于0.5百万^2个可能共存的关系,然后你需要计算每种类型的关系发生了多少!还是你呢?我这么做有很长的路要走吗 它似乎再也不会回来了,我的CPU也被占用了很长一段时间 final ExecutionResult result = engine.execute( "START metag=node(*)\n" + "MATCH met

我使用的是neo4j,它存储了一个简单的“内容有很多标签”数据结构。 我想找出“哪些标签与其他标签共存最多?”

我有大约50万个内容要标记关系,所以不幸的是,这相当于0.5百万^2个可能共存的关系,然后你需要计算每种类型的关系发生了多少!还是你呢?我这么做有很长的路要走吗

它似乎再也不会回来了,我的CPU也被占用了很长一段时间

final ExecutionResult result = engine.execute(
 "START metag=node(*)\n"
 + "MATCH metag<-[:HAS_TAG]-content-[:HAS_TAG]->othertag\n"
 + "WHERE metag.name>othertag.name\n"
 + "RETURN metag.name, othertag.name, count(content)\n"
 + "ORDER BY count(content) DESC");
for (Map<String, Object> row : result) {
 System.out.println(row.get("metag.name") + "\t" + row.get("othertag.name") + "\t" + row.get("count(content)"));
}
final ExecutionResult=engine.execute(
“开始图元=节点(*)\n”
+“匹配metagothertag\n”
+“其中metag.name>othertag.name\n”
+返回metag.name、othertag.name、计数(内容)\n
+“按计数(内容)说明订购”);
用于(地图行:结果){
System.out.println(row.get(“metag.name”)+“\t”+row.get(“othertag.name”)+“\t”+row.get(“count(content)”));
}

您应该尝试减少绑定点,以加快遍历速度。我假设你的图形总是有比内容更多的标签,所以你应该把内容作为你的边界点。差不多

start 
     content = node:node_auto_index(' type:"CONTENT" ')
match
     metatag<-[:HAS_CONTENT]-content-[:HAS_CONTENT]->othertag
where 
     metatag<>othertag
return 
     metatag.name, othertag.name, count(content)  
开始
content=node:node_auto_index('type:'content')
比赛
metatagothertag
哪里
metatagothertag
返回
metatag.name、othertag.name、计数(内容)