qué ?:
Estoy intentando conseguir de página a página del mapa de enlace (matriz) de las páginas de Wikipedia por page_id
en formato siguiente:Wikipedia página-a-página de enlaces por PageID
from1 to1 to2 to3 ...
from2 to1 to2 to3 ...
...
¿Por qué ?:
Estoy buscando un conjunto de datos (páginas de wikipedia) para probar PageRank.
Problema:
En dumps.wikimedia.org es posible descargar páginas -articles.xml que es XML con este tipo de formato:
<page>
<title>...</title>
<id>...</id> // pageid
<text>...</text>
</page>
que voy a utilizar para la recuperación de artículos (text
) , luego también base datos por página (page.sql) que contiene algunos detalles sobre páginas por page_id
y el último que me parece relevante es pagelinks.sql que contiene registros de enlace de página a página. El problema es que la tabla pagelinks
tiene los siguientes campos: pl_from
, pl_namespace
y pl_title
.
Idea: Crear base de datos temporal, importar page
y pagelinks
tablas y crear esta matriz mediante el uso de pagelinks
mesa y recuperar page_id
s de acuerdo con pl_title
s. Posible solución:
SELECT pl_from, GROUP_CONCAT(page_id SEPARATOR ' ') FROM pagelinks
JOIN page ON
pl_title = page_title AND pl_namespace = page_namespace
GROUP BY pl_from
o para obtener un mapa de "retroceso" (to1 from1 from2 from3 ...
, no from1 to1 to2 to3 ...
):
SELECT page_id, GROUP_CONCAT(pl_from SEPARATOR ' ') FROM pagelinks
JOIN page ON
pl_title = page_title AND pl_namespace = page_namespace
GROUP BY page_id
Pregunta:
¿Hay un lugar donde conseguir este tipo de matriz de enlaces de página a página por page_id
para que no tenga que crearlo solo? O si no, ¿hay alguna manera más rápida de obtener este tipo de matriz que la solución que he señalado?
¿Entonces quizás necesite algunos índices? No estoy seguro de si los archivos sql los crean. – svick
Ya hay índices, creo que está limitado por la velocidad de mi disco ... lástima que 'page_id' no sea parte de la tabla' pagelinks' ya ... no importa, gracias por la ayuda de todos modos :) – LihO