如何在不爆炸的情况下计算标签到标签的关系?

时间:2013-04-11 21:20:12

标签: neo4j

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

我有大约500K的内容到标签关系,所以不幸的是,这可以达到0.5M ^ 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)"));
}

1 个答案:

答案 0 :(得分:1)

您应该尝试降低绑定点以使遍历更快。我假设你的图表总是有比内容更多的标签,所以你应该把内容作为你的约束点。像

这样的东西
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)