Chương 4 Giải pháp tính hạng trang cải tiến cho máy tìm kiếm Vinahoo

Một phần của tài liệu Luận văn tốt nghiệp: Giải pháp tính hạng trang khai thác cấu trúc Block của web và áp dụng vào máy tìm kiếm ppt (Trang 29 - 32)

tìm kiếm Vinahoo

4.1. Tính toán PageRank trong Vinahoo

Trong [1], tác giả đã trình bày kỹ về cấu trúc, CSDL, mã nguồn của máy tìm

kiếm Vinahoo. Ở đây, chúng tôi tập trung trình bày về module đánh chỉ số trong đó

thực thi tính toán PageRank.

4.1.1. Mô hình thực thi của module đánh chỉ số

Trong máy tìm kiếm Vinahoo, quá trình tính toán PageRank cho các trang web

được tích hợp trong module index. Đầu tiên module này sẽ tiến hành quá trình crawler

để tải nội dung các trang web. Quá trình này có tương tác với các đối tượng chính là Internet, hệ quản trị cơ sở dữ liệu SQL và cơ sở dữ liệu chứa các file nhị phân tạm. Sau đó, quá trình index sẽ tiến hành đánh chỉ số ngược cho các url mới tải về và lưu trong các cấu trúc dữ liệu thuận tiện cho việc tìm kiếm các url theo từ khóa của

module tìm kiếm sau này, cũng như tính giá trị PageRank cho các trang mới này. Quá

trình này sẽ sử dụng đầu vào là nội dung các trang web mới cập nhật trong file nhị

phân tạm, cùng các thông tin đã có trong file nhị phân cũ. Nó thực hiện việc sắp xếp các url theo từ khóa rồi kết hợp với nội dung cũ của các url trong file nhị phân, và cuối cùng là tính hạng cho các trang Web dựa vào các liên kết giữa các trang.

4.1.2. Quá trình tính toán PageRank trong Vinahoo

4.1.2.1. Cấu trúc hàng đợi các url trong Vinahoo

Vinahoo sử dụng một cấu trúc dữ liệu bảng băm để làm hàng đợi lưu các url cần được index. Lý do vì cấu trúc bảng băm rất thuận tiện cho việc tìm kiếm một phần tử trong danh sách. Vì vậy quá trình kiểm tra một URL đã có mặt trong hàng đợi hay

chưa là rất dễ dàng. Các URL trong hàng đợi được nhóm theo site, các url thuộc cùng

một site được nhóm vào một danh sách FIFO gọi là CSiteUrls. Việc nhóm các URL

theo site có tác ưu điểm là làm giảm việc xử lý các tên miền DNS, giảm số lần phải kết nối tới server, cũng như làm giảm số lần phải duyệt file robots.txt. Do đó làm giảm

đáng kể thời gian duyệt Web. Khi có một url thuộc vào một site cần đưa vào hàng đợi, url đó được thêm vào cuối danh sách url của site nó thuộc vào. Toàn bộ hàng đợi là một bảng băm các CsiteUrls và có một con trỏ trỏ tới site hiện tại đang được duyệt.

Khi cần lấy ra một url để duyệt tiếp, url ởđỉnh danh sách của site hiện tại sẽđược trích ra. Cấu trúc của hàng đợi này như sau:

Hình6: Cấu trúc hàng đợi CSiteQueue trong Vinahoo

Trong đó: mỗi CsiteUrls là một danh sách một chiều các mảng chứa url thuộc về cùng một site. Và CurlLinks là một mảng gồm 100 url liên tiếp.

Hình7: Cấu trúc một phần tử CSiteUrl

4.1.2.2. Qúa trình tính toán PageRank trong Vinahoo

Đối với máy tìm kiếm Vinahoo, sau khi đánh chỉ mục các trang Web trong cơ

sở dữ liệu, quá trình tính toán PageRank được thực hiện. Trong Vinahoo, đại lượng PageRank được coi như chính giá trị hạng và giá trị PageRank được lấy trực tiếp để

làm tiêu chí hiển thị có thứ tự các trang ra màn hình cho người dùng. Công thức tính

PageRank được sử dụng là công thức tính PageRank đơn giản. Các trang được tính

PageRank lần lượt, giá trị PageRank được lưu vào file nhị phân. Hạng trang trong

Vinahoo được tính theo công thức đệ qui. Hàm thực hiện PageRank là: CalsRanks(

CSQLDatabase *database) (adsbygoogle = window.adsbygoogle || []).push({});

4.1.2.3. Nhu cầu đẩy nhanh tốc dộ tính toán PageRank

Như đã đề cập ở các chương trước, việc xếp hạng các trang Web trong CSDL là một bộ phận rất quan trọng trong một hệ thống tìm kiếm. Chất lượng của module này sẽ ảnh hưởng trực tiếp tới các bước sau của quá trình tìm kiếm. Một trong những tính chất quan trọng nhất của module này là tính hiệu quả về thời gian. Nếu quá trình tính PageRank không đủ nhanh, thì sẽ làm gia tăng thời gian chết của các bộ phận khác trong máy tìm kiếm. Như vậy hệ thống tìm kiếm sẽ không cung cấp được chất

m_current

CSiteUrls CSiteUrls ... CSiteUrls

m_last m_first

lượng tìm kiếm tốt cho người dùng. Việc nâng cao được tốc độ tính toán PageRank cũng có tác dụng tăng thêm mức độ tính toán các vectơ thành phần, hướng tới việc xếp hạng các trang Web quan tâm tới các tiêu chí của người dùng.

4.2.3. Đề xuất giải pháp

4.2.3.1. Cài đặt Modified Adaptive PageRank

Phần này trình bày các đề xuất cài đặt thuật toán tính hạng Modified Adaptive

PageRank trên máy tìm kiếm Vinahoo. Hiện tại, trong modul index của Vinahoo chỉ

cài đặt thuật toán tính PageRank đơn giản. Chúng tôi tiến hành thay modul tính toán

PageRank bằng modul tương ứng với thuật toán Modified Adaptive PageRank, vì một

số lý do sau:

- Modified Adaptive PageRank được phát triển dựa trên nền của thuật toán

PageRank - thuật toán đã được cài đặt trong phần mềm Vinahoo. Khả năng tích hợp

Modified Adaptive PageRank vào Vinahoo có độ thành công cao.

- Modified Adaptive PageRank đẩy mạnh tốc độ tính toán, giảm tính toán dư

thừa.

Để tận dụng tối đa các lớp sẵn có của Vinahoo[1], chúng tôi [2] không xây dựng ma trận An x n như trong lý thuyết, mà vẫn áp dụng công thức đệ qui nhưng đưa

thêm vào phương pháp Modified Adaptive PageRank.

Đểđánh dấu sự hội tụ của một trang, chúng ta có hai cách:

- Cách thứ nhất: Thêm thuộc tính cho UrlRank cùng với tách các Url đã hội tụ- chưa hội tụ ra hai file riêng biệt khi lưu trữ.

- Cách hai: Khi lưu trữ sẽ lưu thêm thuộc tính hội tụ converged bằng 1 nếu hội tụ, bằng 0 nếu ngược lại.

Qua so sánh ưu nhược điểm của từng cách, chúng tôi thấy rằng việc lưu hạng của các trang ra hai file có vẻ sẽ tíết kiệm bộ nhớ hơn là lưu trữ thêm thuộc tính hội tụ. Tuy nhiên, khilưu trữ chúng ta cần lưu trữ toàn bộ PageRank của các URL theo thứ tự

lưu trữ là urlID, điều đó giúp quá trình đọc và ghi dữ liệu rất thuận tiện và đơn giản. Do vậy, nếu lưu theo hai file khác nhau lại cần có thông số urlID đi kèm cùng với mỗi giá trị RageRank. Điều đó không hề tíết kiệm bộ nhớ, tính toán không đơn giản hơn

Do vậy, chúng tôi chọn cách thêm một thuộc tính đánh dấu sự hội tụ của một

UrlRank và khi lưu PageRank của các Url ta sẽ lưu thêm giá trị converged - để đánh

dấu nếu giá trị hạng của trang đó đã hội tụ.

nếu giá trị PageRank của trang đã hội tụ

ngược lại (adsbygoogle = window.adsbygoogle || []).push({});

4.2. Kết quả thực nghiệm và đánh giá

Một phần của tài liệu Luận văn tốt nghiệp: Giải pháp tính hạng trang khai thác cấu trúc Block của web và áp dụng vào máy tìm kiếm ppt (Trang 29 - 32)