如何获取给定页面 ID 的当前文本

How to get the current text of a given page id

我有一个机器人,可以直接从数据库中分析某些页面的当前文本。页面 ID 是已知的。过去机器人使用 where revision.rev_id = page.page_latest && text.old_id = revision.rev_text_id。 Mediawiki 更新后,机器人不再工作。

现在想念会员revision.rev_text_iddocu tells, that text.old_id is now referenced by table content。我现在的问题是,找到从 page_id 到 table content.

的方法

发布问题后,我继续调查,再次阅读文档并找到解决方案(table slots):

    SELECT p.page_title, t.old_id, t.old_text
    FROM   `page` p,
           `slots` s,
           `content` c,
           `text` t
    WHERE p.page_id                     = $page_id
     &&   s.slot_origin                 = p.page_latest
     &&   c.content_id                  = s.slot_content_id
     &&   substr(c.content_address,1,3) = "tt:"
     &&   t.old_id                      = substr(c.content_address,4)

但它比旧机器人慢得多(在同一台服务器上测试):7 分钟而不是 11274 页的 1.55 秒。也许我添加了一些索引。

编辑

使用 alter table slots add index (slot_origin) 添加密钥后,该过程需要 1.162 秒(比旧机器人快一点)。