我正在使用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)"));
}
答案 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)