gpt4 book ai didi

递归链接对象的算法

转载 作者:IT王子 更新时间:2023-10-29 01:45:37 24 4
gpt4 key购买 nike

我正在维护一个小程序,它遍历 Neo4j 数据库中的文档并将 JSON 编码的对象转储到文档数据库。在 Neo4j 中——出于性能原因,我想——没有真正的数据,只有 ID。

想象一下这样的事情:

posts:
post:
id: 1
tags: 1, 2
author: 2
similar: 1, 2, 3

我不知道为什么会这样,但这是我必须处理的。然后程序使用 ID 来获取每个数据结构的信息,从而产生正确的结构。 author 不是一个 int,而是一个 Author 对象,包含姓名、电子邮件等。

在添加 similar 功能之前,这一直很有效。 Similar 由引用其他帖子的 ID 组成。由于在我的循环中我正在构建实际的帖子对象,我如何才能有效地引用它们?我唯一能想到的就是用我已经“转换”的帖子创建一个缓存,如果引用的 ID 不在缓存中,则将当前帖子放在列表的底部。最终,它们都会被处理。

最佳答案

如果存在similar 关系的循环,那么您提议的方法将行不通,这种情况可能存在。

例如,您显示的帖子 1 与帖子 2 相似。假设您首先遇到了帖子 1。它引用了尚未在缓存中的帖子 2,因此您将帖子 1 推回到队列的末尾。现在您可以发布 2。它引用尚未在缓存中的帖子 1,因此您将帖子 2 推回到队列的末尾。这将永远持续下去。

您可以通过分两次构建帖子对象来解决这个问题。在第一遍中,您制作了 Post 对象并用除 similar 引用之外的所有信息填充它们,然后构建了一个 map[int]*Post 将 ID 号映射到帖子。在第二遍中,对于每个帖子,您遍历 similar ID 号,在映射中查找每个 ID 号,并使用生成的 *Post 值填充 []*Post 类似帖子的 slice 。

关于递归链接对象的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32659414/

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