Xây dựng module Crawler

Một phần của tài liệu Tìm hiểu các hệ thống search engine và xây dựng a simple search engine (Trang 34 - 38)

2.1 Mô hình module Crawler

Hình 4.2 Mô hình module Crawler

Cách thức hoạt động của module Crawler:

• Bước 1: Crawl nạp URL_master vào queue và vào Url Tree

• Bước 2: Module MultiThread Download lấy các url từ queue để tiến hành download

• Bước 3: Các document được download về sẽ được đẩy vào url store và vào module Parse Url

• Bước 4. Module Parse Url tiến hành phân tách các url từ document mới được đẩy vào. Tách ra các URL hợp lệ. Chuyển cho module AddUrl

• Bước 5. Module AddUrl tiến hành thêm mới url vào cây. Nếu thêm mới thành công, add Url đó vào cuối queue.

Định kì theo thời gian Fetch_time Revisit Scheduce module tiến hành đẩy URL_master vào hàng đợi để download.

2.2 Các vấn đề gặp phải trong quá trình xây dựng hệ thống Crawl

2.2.1 Sự mở rộng không ngừng các URL.

Điều này rất dễ dẫn đến hiện tượng quá tải hệ thống. Trong hệ thống Simple Search Engine biện pháp được áp dụng:

• Mỗi Crawl gán với một Url_master.

• Các Url mới được trích xuất từ các trang web mới được download về phải đáp ứng được điều kiện chứa Url_master ở đầu đường dẫn mới được thêm vào hệ thống.

2.2.2 Lưu vết các trang web đã được Crawl và tránh việc trùng lặp URL.

Một vấn đề tiếp theo trong trong khi xây dựng hệ thống Crawl đó chính là : Tránh việc trùng lặp đường dẫn khi crawl một trang web. Để giải quyết hiện tượng này có 1 giải pháp đó chính là so sánh các URL. Khi thêm mới 1 URL thì URL mới sẽ được đem ra so sánh với các URL đã có trước đó. Để tiến hành việc so sánh có hiệu quả. Thay vì dùng một danh sách đơn để chứa các URL. Simple Search Engine sử dụng cây nhị phân để chứa các URL. Cây nhị phân URL được tạo thành bởi các nút URL ( Node URL). Trong đó mỗi Node URL chứa các thông tin cơ bản:

• Độ sâu của URL ( Depth)

• Trạng thái của URL ( Status)

• Greate ( Node có URL lớn hơn URL của node đang xét)

• Small ( Node có URL bé hơn URL của node đang xét)

Mỗi khi tiến hành thêm mới 1 URL vào tree thì URL này sẽ được kiểm tra so sánh với các URL đã có trước ở trong cây. Việc so sánh khi tiến hành bằng giải thuật cây nhị phân sẽ tiết kiệm được rất nhiều tài nguyên và thời gian hơn so với việc so sánh với 1 danh sách đơn.

2.2.3 Viếng thăm lại các trang web và cập nhật nội dung của một website

Một trong những nhiệm vụ của hệ thống Crawl ngoài việc download các trang web của một website về thì nó phải download các trang cập nhật ( các trang được thêm mới) của website đó về. Vậy làm sao để biết được một trang web nào đó của một website nào là trang web có nội dung đã được thay đổi và đánh giá được mức độ và tần suất thay đổi nội dung của trang web. Đây là một bài toán không phải dễ dàng giải quyết. Ở hệ thống Simple Search Engine tác giả đưa ra một cách giải quyết bài toán. Đây chỉ là một cách giải quyết chưa mang nhiều tính học thuật và chưa tối ưu. Nhưng ở một góc độ nào đó. Nó đã giải quyết được vấn đề cập nhật các trang web mới của 1 website. Đó chính là:

Nhận xét: Với các website cung cấp thông tin có các nội dung được cập nhật mới liên tục.( ví dụ các trang báo) thì các thông tin mới của của website đó sẽ được đem ra ở trang chính của website. Vậy thay vì việc phải thăm lại tất cả các trang đã download của website đó thì ta chỉ cần thăm lại trang chính của trang web đó là đủ.

Trong hệ thống Simple Search Engine trang chính được đặt tên là URL_master. URL_Master có thể là trang chính của một website ( ví dụ : http://guardian.co.uk/ ) hoặc là trang chính của một mục của website ( ví dụ:

http://www.guardian.co.uk/film ) định kỳ sau một thời gian Fetch time các URL_master sẽ được nạp vào queue và sẽ được download về để tìm kiếm các URL mới tương ứng với các trang web mới.

2.2.4 Quá tải hệ thống

Một vấn đề rất dễ nhận ra khi xây dựng một hệ thống crawl đó chính là sự quá tải hệ thống. Với 1 website số lượng web paper của một website đó có thể từ vài chục web paper cho đến hàng chục nghìn web paper. Việc lấy về và lưu trữ tất cả các trang web của của một website là một điều hoàn toàn không cần thiết vì các lý do sau:

- Lãng phí tài nguyên hệ thống Crawl: hệ thống Crawl phải dành một phần lớn băng thông để có thể download hết tất cả các web paper của một website.

- Trong các web paper của một website có thể có các web paper chứa đựng các thông tin cũ, không còn hoặc ít có giá trị. Việc lưu trữ các web paper đó là một sự lãng phí tài nguyên lưu trữ của hệ thống.

- Việc crawler 1 website liên tục có thể ảnh hưởng đến các webserver. Trong hệ thống Simple Search Engine đã đưa ra một cách giải quyết: gắn với mỗi Crawl tương ứng với một độ sâu tối đa nhất định. Crawl chỉ lấy về các web paper tương ứng với các url có độ sau không quá độ sau tối đa. Với các URL có độ sâu lớn hơn độ sâu tối đa tương ứng với Crawl thì sẽ không được nạp vào hệ thống. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Tìm hiểu các hệ thống search engine và xây dựng a simple search engine (Trang 34 - 38)