一个SQL查询,它从Wikipedia获取给定页面标题的类别列表

时间:2011-01-25 04:00:28

标签: mysql mediawiki categories

鉴于维基百科页面标题,我想获得其类别。但是,我似乎无法有效地找到这样做的地方。

这是页面表: http://www.mediawiki.org/wiki/Manual:Page_table

这里是categorylinks表 http://www.mediawiki.org/wiki/Manual:Categorylinks_table

where categorylinks.cl_from = page.page_id ...但是,在我的项目中,我只会有一个可能的页面标题,而不是页面ID。并且看起来page_title不是唯一的。

有没有更好的方法来解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:2)

网页标题是唯一的每个命名空间

要在默认命名空间中搜索,请在命名空间0内搜索。以下是您可能要使用的查询:

SELECT `categorylinks`.`cl_to`
FROM `page`
JOIN `categorylinks` ON `categorylinks`.`cl_from` = `page`.`page_id`
WHERE `page`.`page_namespace` = 0 AND `page`.`page_title` = 'Page_name_here'

答案 1 :(得分:0)

AFAIK,page_title实际上是唯一的。它由MediaWiki逻辑提供:您是否尝试创建两个具有相同标题的页面?具有两个同等标题页面的网址如何显示?

因此,您只需要对两个表进行查询,这将通过标题名称从Page table获取page_id,并使用Categorylikns table中的page_id获取类别列表。