3 PHẦN III:
3.1.2 Thiết kế các Chức năng của Hệ thống
3.1.2.1 Module Web Robot. Gồm các thành phần sau:
3.1.2.1.1 CollectEngine.
Đây là thành phần điều khiển quá trình thu thập thơng tin từ Internet. Nĩ sẽ tạo ra các DomainCollector và quản lý việc download. Khi CollectEngine hồn tất cơng việc cũng là lúc module này kết thúc. Sơ đồ hoạt động của hệ
Khởi động CollectEngine
Kết thúc.
Xác lập DomainList = Empty
Đọc từ cơ sở dữ liệu những Domain nào cần được download về mà chưa được download, đưa những Domain này vào DommainList
Ngược lại
Tạo ra các Domain Collector (robot con), và cho các robot này hoat động
Đợi cho tất cả các Domain Collector hoạt động xong.
Sau khi hoạt động xong, các robot con này sẽ được
hủy đi.
Mơ tả cơng việc đọc DomainList từ cơ sở dữ liệu (từ sơđồ trên): 3.1.2.1.2 DomainCollector.
Cĩ nhiệm vụ thu thập tất cả các trang thơng tin bên trong một domain về.
Đầu vào : tên domain mà hệ thống cần thu thập về.
Hoạt động : DomainCollector lấy danh sách tất cả các trang web đã được
đánh dấu thuộc về domain nhưng chưa lấy về. Kế tiếp, DomainCollector sẽ
tạo ra các DataCollector và cho các DataCollector này thực hiện việc lấy các trang WEB về.
Đầu ra : domain được tải về.
Ngồi ra, DomainCollector cịn lưu trữ một Collect Engine (là robot cha của nĩ) để thực hiện việc giao tiếp.
Mơ tả cơng việc tải tồn bộ domain cĩ tên DomainName về.
Bắt đầu thực hiện.
Đọc từ cơ sở dữ liệu tất cả những địa chỉ web thuộc DomainName cần được download về nhưng chưa down load. Đưa tất cả những địa chỉ này vào AddressList
Kiểm tra xem Address List có rỗng hay không ?
Nếu rỗng.
Cập nhật thông tin của Domain này vào cơ sở dữ liệu
Kết thúc hoạt động
Nếu không rỗng. Tạo ra các DataCollector (robot con của Domain Collector) và cho các robot con này hoạt động.
Đợi cho các robot con này thực hiện xong.
Sau khi thực hiện xong, các robot con sẽ được xóa.
Mơ tả cơng việc đọc AddressList từ cơ sở dữ liệu :
3.1.2.1.3 DataCollector.
Bộ thu thập thơng tin (các trang WEB).Mục tiêu của DataCollector là thu nhận thơng tin từ Internet về, sau đĩ sẽ lưu trữ chúng xuống cơ sở dữ liệu,
đồng thời cũng ghi những dữ liệu này xuống hệ thống file.
Đầu vào : địa chỉ trang WEB cần thu thập.
Hoạt động : Đầu tiên, DataCollector sẽ tạo một kết nối đến domain của trang WEB, sau đĩ kiểm tra tình trạng của kết nối này. Nếu kết nối ở tình trạng tốt, DataCollector sẽ lấy các thơng số về trang web như : ContentLength, LastModified và ContentType. Nếu ContentType thuộc một trong các loại sau: application/pdf,application/vnd.ms- excel,application/msword, application/msexcel, application/ms-powerpoint, application/postscript, text/rtf, text/html thì mới lấy về. Sau khi lấy về , thì ghi trang web này xuống hệ thống Tập tin.
Đầu ra : Trang WEB được lấy về. DataCollector bao gồm các thành phần sau:
URL : địa chỉ trang web mà DataCollector cần lấy về.
DataBuffer : là vùng đệm chứa nội dung của trang web khi được download về.
ContentLength : độ lớn của trang web.
LastModified : ngày cập nhật cuối cùng của trang web.
Location : vị trí trên file system mà nội dung trang web sẽđược ghi xuống. Tạo một bộ đọc
DBReader.
DBReader sẽ lấy trong bảng
DownloadedData
những URL nào có
Status = 0 (tức là đã tìm thấy địa chỉ này
Đưa những địa chỉ này vào Address List và hủy
DomainCollector : là robot cha của nĩ, dùng để thực hiện việc giao tiếp trong khi hoạt động.
Sơ đồ hoạt động của DataCollector:
Khởi động Data
Nếu rỗng Nếu không
Kiểm tra AddressList trong DomainCollector (cha của nó)
ã
Kết thúc hoạt động của Data
Lấy phần tử đầu tiên trong AddressList và xóa phần tử này khỏi
Đưa phần tử này vào URL
Thực hiện việc tải trang tài liệu có địa chỉ URL về.
Mô tả công việc tải trang tài liệu về.
Bắt đầu hoạt động
Thực hiện việc kết nối tới trang web.
Nếu kết nối không thành
Xoá trang web khỏi cơ sở dữ liệu.
Kết thúc hoạt động.
Nếu kết nối thành Lấy các thông tin như ContentLength, LastModified,
Kiểm tra Content Type có thuộc các dạng file : text/html, word, rtf,
Nếu
Nếu đúng. Lấy nội dung trang web về và ghi xuống file.
Tạo một HtmlParser. Rồi gọi parser này phân tích nội dung trang web. Kết quả trả về của parser này là một danh sách
Cập nhật nội dung trang web trong cơ sở dữ liệu.
Gọi Domain Collector (robot cha của nó) thực hiện việc cộng danh sách liên kết này vào cơ
Mô tả việc Cập nhật nội dung trang web :
Tạo một bộ ghi DBWriter.
DBWriter sẽ cập nhật những thông tin về Location, … của trang web xuống bảng
DownloadedData. Đồng thời cập nhật tình trạng
Status của trang web thành 1 (nghĩa là trang web đã được tải về một cách hoàn tất).
Mô tả công việc Domain Collector cộng danh sách các liên kết vào cơ sở dữ liệu:
Bắt đầu hoạt động. Kiểm tra xem
Nếu Kết thúc.
Nếu không rỗng.
Lấy liên kết đầu tiên và xoá nó
Kiểm tra xem liên kết này có thuộc domain hiện tại mà Domain Collect đang xử lýhay không ?
Ghi liên kết này vào cơ sở dữ liệu. Nếu rỗng
Nếu phải Lấy Domain mà liên kết này thuộc về.
Kiểm tra xem trang domain này đã có trong cơ sở dữ liệu chưa ?(tức là có trong bảng Domain chưa )
Nếu có rồi
Nếu chưa có
Ghi Domain này vào bảng Domain và cho tình trạng của nó Status = 0. (chức là chưa download). Đồng thời , ghi liên kết này vào bảng DownloadedData
và cho nó thuộc Domain vừa rồi và Status của nó cũng bằng 0. (tức là chưa được download).
3.1.2.2 Module ConvertFile
Tồn bộ cơng việc của module này được mơ tả qua sơđồ sau:
Cơng đoạn chuyển định dạng.
Dữ liệu lấy về cĩ thể ở nhiều định dạng, điều này cĩ thể gây khĩ khăn trong việc index và chuyển mã. Do đĩ, mục đích của cơng đoạn này là chuyển tất cả các định dạng về dạng HTML. Sử dụng cơng nghệ “INSO filter” để lọc tài liệu.
Cơng đoạn chuyển mã.
Vấn đề ngơn ngữ luơn là vấn đề khĩ khăn trong việc phát triển các ứng dụng. Riêng đối với tiếng Việt điều này lại càng phức tạp. Tính cho đến nay, tiếng Việt cĩ khoảng 9 bảng mã, bao gồm : TCVN3, VIQR, VNI Windows, VISCII, VPS, BK HMC1, BK HCM2, VietwareX, Vietware F. Cho đến khi Unicode ra đời, thống nhất bảng mã của các ngơn ngữ. Tuy vậy, các tài liệu hiện nay lại ở rất nhiều bảng mã khác nhau. Điều này gây ra rất nhiều khĩ khăn trong việc index tài liệu. Chính vì vậy, trước khi index, các tài liệu phải được chuyển về một bảng mã chung để cĩ thể index được. Do Oracle hỗ trợ Unicode tổ hợp, và bản thân unicode tổ hợp cĩ rất nhiều lợi điểm như dễ dàng xử lý, kích thước lưu trữ tài liệu nhỏ... nên chúng tơi quyết định sử dụng unicode tổ
hợp trong việc lưu trữ và xử lý ngơn ngữ.
Input:DL a WebRobot
Chuyển định
dạng Chuymã ển bảng Ltin vào CSDL ưu các thơng
Lưu nội dung vào đĩa cứng INSO Filter Technology Vietnamse Converter Output: Oracle Text
Khĩ khăn lớn nhất trong vấn đề chuyển bảng mã chính là làm sao nhận
được bảng mã của tài liệu. Một tài liệu được lưu trữ dưới dạng VNI cĩ thể rất giống với VietwareX, hay một tài liệu lưu trữ dưới dạng TCVN3 lại rất giống với VPS. Một vấn đề kế tiếp chính là chuyển bảng mã sang Windows-1258. Sau khi thu thập các bảng mã và khảo sát để tìm ra những điểm khác biệt, chúng tơi đề ra một thuật giải Heuristic để giải quyết vấn đề này. Theo thống kê của chúng tơi, thuật giải này chỉ đúng với khoảng trên 95% trong việc chuyển đổi, tuy nhiên theo chúng tơi, sai số 5% cĩ thể chấp nhận được.