在两个wikipedias中选择较大的文章

时间:2017-05-24 20:19:21

标签: mysql mediawiki wikipedia mediawiki-api

使用Wmflabs的“Quarry”(https://quarry.wmflabs.org/)。

据我所知,这是MySQL。

如何选择德国维基的所有文章,这些文章的大小比enwiki中的文章更大?

以下是我使用的代码。我需要de_len,但我不知道如何获得它。

USE enwiki_p;

SELECT 
        page_title en_title,
        page_len en_len,
        ll.ll_title as de_title
FROM page
JOIN langlinks ll
    ON ll_from = page_id
WHERE page_namespace = 0
GROUP BY page_id  
HAVING max(CASE ll_lang  WHEN 'de' THEN 1 ELSE 0 END) = 0  
LIMIT 10

1 个答案:

答案 0 :(得分:1)

您需要使用两个数据库中至少三个表来从两个wiki中获取相应文章(页面)的正确页面大小,以及关系的相关中间语言链接,以进行良好的比较。 解决方案是:

SELECT 
       enp.page_title as en_title,
       enp.page_len as en_len,
       dep.page_title as de_title,
       dep.page_len as de_len        
FROM enwiki_p.page enp
JOIN enwiki_p.langlinks enll
  ON enll.ll_from = enp.page_id and ll_lang="de"
JOIN dewiki_p.page dep
  ON enll.ll_title = REPLACE(dep.page_title, '_', ' ')
WHERE enp.page_namespace = 0 and enp.page_is_redirect = 0 
  AND dep.page_namespace = 0 and dep.page_is_redirect = 0
GROUP BY enp.page_id  
HAVING dep.page_len > enp.page_len
ORDER BY dep.page_len DESC  
LIMIT 100