我正在尝试为某个类别查找相应的文本记录。
例如,如果我的“categorylinks”记录的 ID 为 5,我将如何找到属于该类别的文本?
编辑:我仍然不确定您是在要求类别页面的文本还是类别中页面的文本,所以这两者都是:
类别页面的文本:
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 数据库模式。