Jaka ?:
próbuję dostać strona do strony link Mapa (Matrix) stron Wikipedii przez page_id
w następującym formacie:wikipedia strona do strony odsyłacze według IdStrony
from1 to1 to2 to3 ...
from2 to1 to2 to3 ...
...
Dlaczego ?: Szukam zestawu danych (strony z wikipedia), aby wypróbować PageRank.
Problem:
Na dumps.wikimedia.org możliwe jest pobranie stron-articles.xml XML, który jest z tego rodzaju formacie:
<page>
<title>...</title>
<id>...</id> // pageid
<text>...</text>
</page>
że użyję artykułów przywoływania (text
) , a następnie bazują na danych na stronie (page.sql), które zawierają pewne szczegóły na temat stron: page_id
, a ostatnią, która wydaje mi się istotna, jest pagelinks.sql która zawiera rekordy łącza strony do strony. Problem polega na tym, że tabela pagelinks
ma następujące pola: pl_from
, pl_namespace
i pl_title
.
Idea: Tworzenie tymczasowej bazy danych, import page
i pagelinks
tabele i tworzyć tę matrycę za pomocą pagelinks
stół i pobierania page_id
s według pl_title
s. Możliwe rozwiązanie:
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
lub uzyskania mapę "wstecznych" (to1 from1 from2 from3 ...
, nie 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
Pytanie:
Czy jest miejsce, gdzie można uzyskać tego rodzaju matrycy Linki od strony do strony przez page_id
, więc nie muszę tworzyć go samodzielnie? A jeśli nie, czy istnieje szybszy sposób uzyskania tego rodzaju matrycy niż rozwiązanie, które wskazałem?
Może potrzebujesz indeksów? Nie jestem pewien, czy pliki sql je utworzyć. – svick
Istnieją już indeksy, myślę, że jest ograniczona szybkością mojego dysku ... szkoda, że 'page_id' nie jest już częścią tabeli' pagelinks' ... nieważne, dziękuję za pomoc w każdym razie :) – LihO