Soretna
(Soretna)
1
在将数万个来自 Yahoo Groups 的旧帖子导入 Discourse 后,我留下了许多本应属于同一线程的孤立话题。直觉上的解决方案似乎是选择或高亮显示其中多个话题,然后将它们拖入父话题中。
或者,更好的方法可能是:只需选择所有要合并的话题,然后让系统自动将它们整合为一个单一话题,其中日期最早的帖子作为父话题,并作为主要话题名称/主题,现有日期则决定帖子的顺序。
例如,我的消息大致如下:
- 某个话题名称
- [邮件列表名称] 某个话题名称
- [邮件列表名称] 某个话题名称
- [邮件列表名称] 某个话题名称
- [邮件列表名称] 某个话题名称
- [邮件列表名称] 某个话题名称
- [邮件列表名称] 某个话题名称
- [邮件列表名称] 某个话题名称
因此,我基本上应该能够选择所有这些帖子,然后直接使用右侧的工具栏,点击“合并”按钮来实现目标。
这个功能是否缺失,还是我忽略了某些操作?
simon
2
Soretna
(Soretna)
3
感谢指出这一点。不幸的是,我早已了解其运作方式。真正的问题在于,你在该教程中演示的是如何在主题内处理帖子。
试想一下,假设有 100 个完全相同或主题/标题略有不同的同一主题。
问题在于,mbox / Yahoo Groups 的导入并未完全正确执行。这可能是由于邮件中的 ID 不正确,也可能是其他原因,但结果是,对我们中的一些人来说,成千上万甚至数万的帖子被错误地彼此断开连接。我们需要一种方法来合并这些帖子。
不幸的是,仅凭主题行进行自动合并可能并非最优方案。我们可能需要人工逐一检查,手动选择大量帖子,然后指示系统将它们合并为一个共同的主题。
看起来,执行此操作的最佳(实际上也是唯一可行的)位置是在类别的实际主题视图中。按照你在指南中介绍的方法操作极其繁琐,根本不可行,因为你必须进入仅包含一条帖子的主题,然后执行选择该帖子的流程,接着隔离父帖,最后进行合并。当存在数十或数百条具有相同主题行的帖子时,情况会变得更加复杂。
因此,我们需要在类别视图中提供一个“选择主题…
听你的描述,你似乎正站在十字路口。你需要决定,将这些旧的 Yahoo 邮件准确、整洁地归入同一个主题,对你来说有多重要。
如果这很重要,我的建议是退一步,先修复 mbox 文件,然后再小心地分批导入。
最好的方法可能是先将它们导入到 Mozilla Thunderbird 中,在那里进行调整。Thunderbird 的每个文件夹都是一个独立的 mbox 文件,因此你可以将所有相关邮件移动到一个文件夹中,然后用文本编辑器打开该 mbox 文件,通过查找和替换来修正邮件 ID。导入工具正是利用这个 ID 来判断哪些邮件应归入同一个主题。
其实,最好的解决办法是回到过去,说服当初开发 Outlook 的程序员们再努力一点,遵循主流的电子邮件标准。
Soretna
(Soretna)
5
我有一点好奇:@pfaffman,您目前是否知道有任何方法可以以编程方式实现类似的操作?我或许愿意采用“广撒网”的方式,直接说“合并所有主题行相同并加上此前缀的主题”。
我的意思是,正如我上面第一条帖子中提到的,有些名为“某个主题名称”的主题前面带有“[邮件列表名称]”的前缀。基本上,我可以使用一个“核弹级”的合并选项,将所有可能相关的主题都拉进来,然后在用户无意中使用了相同的主题名称/主题时再将其拆分出来…
Soretna
(Soretna)
6
哈哈,确实,@tobiaseigen 这个建议不错,但要在这么多几万条消息中完成这个艰巨的步骤,我实在抽不出时间。光是 mbox 文件就超过 500 MB 了。我打算试着在 Discourse 内部逐步修复问题,这样其他版主也能帮忙。希望要么能像上次提问那样找到其他建议,要么在没有其他选择时,我们就着手开发一个插件来实现。
pfaffman
(Jay Pfaffman)
7
我建议从头开始,确保导入过程一开始就正确无误;@tobiaseigen 提出的建议听起来很有前景。我很久没有做过大规模的 mbox 导入了,当时我提前做了大量工作来修复您所描述的这类问题。如果这不是一个可行的选项,那么您可以在 Rails 端尝试一种方法:收集所有您认为应归为一组的帖子,按日期排序,然后创建一个新主题(或选择第一个帖子),并将所有帖子移动到新主题中。
要让我想出具体的代码还需要一些时间。
Soretna
(Soretna)
8
自数据导入以来,论坛上的参与度一直很高,因此我认为此时“重新开始”已不现实。我对删除操作会感到有些顾虑,而且版主们已经开始整理导入的数据,合并账户等。
我稍后会自行研究一下 Rails 的方法,然后分享我的成果,除非在此之前有人提出建议。如果需要,我们可以在假期期间暂时让情况保持“混乱”,直到我们解决这个小难题。