【问题标题】:Mapping from page_title to old_text content从 page_title 映射到 old_text 内容
【发布时间】:2012-09-12 12:53:14
【问题描述】:

我尝试使用 SQL 查询访问 WikiMedia 数据库以获取文章页面的内容。('old_text', from the 'text' table) 通过搜索其 page_title (from the 'page' table)。 不幸的是,我看不到 page_id (from the page table) an the old_id (from the 'text' table) 之间的映射。
那么,如何使用给定的页面标题从带有 sql 查询的文章中获取文本?

【问题讨论】:

    标签: mysql mediawiki


    【解决方案1】:

    为了补充 svick 的回答,这里有一个实际的示例 SQL 查询:

    SELECT old_text, old_flags
    FROM page
      JOIN revision ON rev_id = page_latest
      JOIN text ON old_id = rev_text_id
    WHERE page_title = 'Main_Page' AND page_namespace = 0;
    

    (请注意,您还需要 old_flags 字段才能理解 old_text 的内容。至少,您应该检查 flags 字段是否包含您期望它具有的值。)

    【讨论】:

    • 应该是“你可能需要 old_flags 字段”吧?在默认安装中,old_text 是未压缩的,包含修订的实际文本,因此您不需要 old_flags。只有当你在做一些奇特的事情,比如压缩旧版本或使用共享数据库时,你才需要对 old_flags 做一些事情......
    【解决方案2】:

    The documentation for the text table 说:

    old_id

    修订表中的revision.rev_text_id 是该列的键。

    因此,要获取某个修订的文本,您需要知道所需修订的 id。 如果你只想要一个页面的最新版本,它的 id 存储在page_latest

    【讨论】:

    • SELECT old_text from text, page, revision WHERE page.page_latest = revision.rev_id AND revision.rev_text_id = text.old_id and page_title = "" and page_namespace = <namespace id></namespace>
    猜你喜欢
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2021-10-20
    • 2021-09-27
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多