1

我正在尝试为某个类别查找相应的文本记录。

例如,如果我的“categorylinks”记录的 ID 为 5,我将如何找到属于该类别的文本?

4

1 回答 1

1

编辑:我仍然不确定您是在要求类别页面的文本还是类别中页面的文本,所以这两者都是:

类别页面的文本:

select old_text from text, revision, page, categorylinks
where rev_text_id = old_id
    and rev_id = page_latest
    and page_namespace = 14
    and page_title = cl_to
    and cl_from = <cl_from entry in categorylinks table>

类别中的页面文本:

select old_text from text, revision, page, categorylinks
where rev_text_id = old_id
    and rev_id = page_latest
    and page_id = cl_from
    and cl_to = <cl_to entry in categorylinks table>

更多解释:

基本上,在 categorylinks 中,cl_title是类别页面的标题。page_title因此,您可以使用and page_namespace= 14(类别命名空间)在页表中查找它。一旦有了正确的页面,该page_latest行的字段就等于rev_id修订表中的字段。这为您提供类别页面的最新版本。修订表rev_text_id的字段old_id与文本表中的字段相同。old_text在文本表中是您的文本。

任何时候你想要一个页面的文本,它基本上都是这样工作的。查找页面数据库记录。然后:page.page_latest = revision.rev_id and revision.rev_text_id = text.old_id

另请参阅:MediaWiki 数据库模式

于 2012-08-20T16:20:29.400 回答