Cosa ?:
Sto cercando di ottenere da pagina a pagina di collegamento mappa (matrice) di pagine di Wikipedia dal page_id
in seguente formato:wikipedia page-to-page link da parte pageid
from1 to1 to2 to3 ...
from2 to1 to2 to3 ...
...
Perché ?:
Sto cercando il set di dati (pagine da wikipedia) per provare PageRank.
Problema:
A dumps.wikimedia.org è possibile scaricare pagine-articles.xml che è XML con questo tipo di formato:
<page>
<title>...</title>
<id>...</id> // pageid
<text>...</text>
</page>
che userò per il recupero articoli (text
) , quindi anche base dati per pagina (page.sql) che contiene alcuni dettagli sulle pagine da page_id
e l'ultimo che mi sembra rilevante è pagelinks.sql che contiene record di collegamento pagina-pagina. Il problema è che la tabella pagelinks
ha i seguenti campi: pl_from
, pl_namespace
e pl_title
.
Idea: Crea database temporaneo, importare page
e pagelinks
tabelle e creare questa matrice utilizzando pagelinks
tavolo e recupero page_id
s in base alla pl_title
s. Possibile soluzione:
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 per ottenere la mappa di "ritroso" (to1 from1 from2 from3 ...
, non 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
Domanda:
C'è un posto dove trovare questo tipo di matrice collegamenti da pagina a pagina di page_id
in modo che non sia necessario crearlo da solo? O se no, c'è un modo più veloce per ottenere questo tipo di matrice rispetto alla soluzione che ho indicato?
Allora forse hai bisogno di alcuni indici? Non sono sicuro che i file sql li creino. – svick
Ci sono già degli indici, penso sia limitato dalla velocità del mio disco ... peccato che 'page_id' non faccia già parte del tavolo' pagelinks' ... non importa, grazie comunque per l'aiuto :) – LihO