有什么方法可以让 Discourse 在导入后或在话题中更新链接计数后,重新计算用户个人资料中的所有热门话题吗?
奇怪的是,“热门回复”功能运行正常。
有什么方法可以让 Discourse 在导入后或在话题中更新链接计数后,重新计算用户个人资料中的所有热门话题吗?
奇怪的是,“热门回复”功能运行正常。
我相信统计数据是每 24 小时自动计算的。您只需等待,无需进行任何操作。
情况似乎并非如此,我们的导入测试已运行数周,其中一些问题已自行修复,但另一些仍未解决。“热门话题”便是最典型的例子,“话题中的链接数量”也是如此。除此之外,整个网站的情况看起来是正确的。
嗯,查看代码后我们发现有两个任务:TopRefreshToday(每小时执行一次)和 TopRefreshOlder(每 24 小时执行一次)。这两个任务都调用了 此处 的方法,如果需要,您可以随时在 Rails 控制台中手动运行这些方法。
能否请您检查 /sidekiq/scheduler,确认这两个任务是否正在运行?
我假设计算热门话题所需的所有相关信息都已随导入一并迁移过来了?
在这种情况下,这些任务运行正常。问题似乎在于 topics 表中的 like_count 字段未被填充。是否有好的方法来重新计算该字段的值,还是说这必须在导入期间完成?如果必须在导入期间完成,那么该计算应如何运作?这是否是对主题下所有帖子中所有点赞数的求和?
我确实通过 Rails 控制台找到了一种看似能重新计算该字段的方法:
Topic.visible.map(&:update_statistics)
该方案的缺点是,根据我们的主题和帖子数量,我估计该命令需要大约两个月才能执行完毕。
看起来您可以使用 update_action_counts 方法重新生成 like_count:
因此,也许可以这样做:
Topic.all.find_each do |t|
putc '.'
t.update_action_counts
end
这对我和@Ghan 来说效果非常好,非常感谢 ![]()