gì ?:
Tôi đang cố gắng để có được trang-to-page liên kết bản đồ (matrix) của các trang wikipedia bởi page_id
ở định dạng sau:liên kết wikipedia trang-to-page bởi pageid
from1 to1 to2 to3 ...
from2 to1 to2 to3 ...
...
Tại sao ?:
Tôi đang tìm tập dữ liệu (các trang từ wikipedia) để dùng thử PageRank.
Vấn đề:
Tại dumps.wikimedia.org nó có thể tải về trang-articles.xml đó là XML với loại định dạng:
<page>
<title>...</title>
<id>...</id> // pageid
<text>...</text>
</page>
mà tôi sẽ sử dụng cho các bài viết lấy (text
) , sau đó cũng dựa trên dữ liệu trên mỗi trang (page.sql) chứa một số chi tiết về các trang theo page_id
và cuối cùng có vẻ liên quan đến tôi là pagelinks.sql có chứa các bản ghi liên kết từng trang. Vấn đề là pagelinks
bảng có các trường sau: pl_from
, pl_namespace
và pl_title
.
Idea: Tạo cơ sở dữ liệu tạm thời, nhập khẩu page
và pagelinks
bảng và tạo ra ma trận này bằng cách sử dụng pagelinks
bảng và lấy page_id
s theo pl_title
s. giải pháp khả thi:
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
hoặc để nhận bản đồ của "backlinks" (to1 from1 from2 from3 ...
, không 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
Câu hỏi:
Có một nơi để có được loại ma trận liên kết từng trang của page_id
để tôi không cần tự tạo nó? Hoặc nếu không, có cách nào nhanh hơn để có được loại ma trận này hơn là giải pháp mà tôi đã chỉ ra không?
Sau đó, có thể bạn cần một số chỉ mục? Tôi không chắc liệu các tập tin sql tạo ra chúng. – svick
Có các chỉ mục đã có, tôi nghĩ nó bị giới hạn bởi tốc độ đĩa của tôi ... quá tệ đến nỗi 'page_id' không phải là một phần của bảng' pagelinks' đã ... không sao, cảm ơn bạn đã giúp đỡ :) – LihO