如何获取给定页面 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_id
。 docu 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 秒(比旧机器人快一点)。
我有一个机器人,可以直接从数据库中分析某些页面的当前文本。页面 ID 是已知的。过去机器人使用 where revision.rev_id = page.page_latest && text.old_id = revision.rev_text_id
。 Mediawiki 更新后,机器人不再工作。
现在想念会员revision.rev_text_id
。 docu 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 秒(比旧机器人快一点)。