gpt4 book ai didi

python - neo4j,在论坛结构中,如何找到每个帖子得到了多少回复(包括 child 的 child ......)

转载 作者:行者123 更新时间:2023-11-28 22:46:07 24 4
gpt4 key购买 nike

我正在编写一个分析论坛帖子的程序。
将论坛主题加载到 neo4j DB 后,
我正在尝试根据他们得到的回复数量对帖子进行“排名”

Responses 包括直接响应以及每个直接响应的整个子树。
这个想法是计算树下的所有 child (树是一棵简单的树没有任何循环)

每个帖子都是一个neo4j节点

# Create MSG nodes:
statement = "CREATE (c:MSG {id:{N}, title:{T}}) RETURN c"
for msg in msgs:
graph.cypher.execute(statement, {"N": msg[0], "T": msg[1]})

代表一个帖子的节点是对另一个帖子的响应,与他的父节点有关系r:CHILD_OF
根节点不会有 r:CHILD_OF 关系,但会有一个“0”作为它们的父 ID

|parent id | msg id | Rank | List of all responses
+----------+--------+------+----------------------
|0 | 1051 | 3 | (1054, 1056, 1060)
|1051 | 1054 | 0 |
|1051 | 1056 | 1 | (1060)
|1056 | 1060 | 0 |
|0 | 1052 | 0 |

在这张表中,

  • msg 1051 是线程中的第一个帖子
  • msg 1052 是另一个线程中的第一篇文章
  • msg 1051 得到了 2 个直接响应(1054、1056)和另一个间接响应(1060)
  • 消息 1056 得到 1 个直接响应 (1060)

我需要得到可以创建这个排名的密码
但是不知道怎么写。
该项目在 python 中,我正在使用 python 2.7、py2neo 2.0.3、neo4j 2.1.6

最佳答案

此查询应返回类似于您的表的结果集(但没有第一列):

MATCH (m:MSG)
OPTIONAL MATCH (c:MSG)-[:CHILD_OF*1..]->(m)
WITH m, COLLECT(DISTINCT c.id) AS childMsgIds
RETURN m.id AS `msg id`, LENGTH(childMsgIds) AS Rank, childMsgIds AS `List of all responses`

这符合您的需求吗?

关于python - neo4j,在论坛结构中,如何找到每个帖子得到了多少回复(包括 child 的 child ......),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com