我试图创建一个简单的密文query
,该密文应该找到图中与该结构(BlogPost A) -> (Term) <- (BlogPost B)
大致匹配的所有实例。这意味着,我正在尝试对所有标记有相同术语的博客帖子,还要计算术语的数量。术语是这种情况下的分类机制。
这是我的查询建议:
MATCH (blogA:content {entitySubType:'blog'})
WITH blogA MATCH (blogA) -[]-> (t:term) <-[]- (blogB:content)
WHERE blogB.entitySubType='blog' AND NOT (ID(blogA) = ID(blogB))
RETURN ID(blogA), ID(blogB), count(t) ;
此查询在约1天后以null结尾。
在子查询中blogA的用法是否无法以我的使用方式进行?当使用具有限制的相同查询时,我会得到重用:
MATCH (blogA:content {entitySubType:'blog'})
WITH blogA
LIMIT 10
MATCH (blogA) -[]-> (t:term) <-[]- (blogB:content)
WHERE blogB.entitySubType='blog' AND NOT (ID(blogA) = ID(blogB))
RETURN ID(blogA), ID(blogB), count(t)
LIMIT 20;
我的Neo4j实例具有约500GB RAM,包括所有属性的整个图为约30GB,总共约有1500万个顶点,而博客顶点数为101k,术语数为108k。
对于可能出现的问题或建议的改进表示感谢。
答案 0 :(得分:0)
还要确保使用可以流式传输数十亿个结果的客户端驱动程序(例如Java)来使用该查询。这是一个使用编译后的运行时的查询,该运行时应该最快,内存效率最高。
MATCH (blogA:Blog)-[:TAGGED]->(t:Term)<-[:TAGGED]-(blogB:Blog)
WHERE blogA <> blogB
RETURN ID(blogA), ID(blogB), count(t);