Tải bản đầy đủ (.doc) (106 trang)

xây dựng một công cụ tìm kiếm thực sự

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.61 MB, 106 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Hoàng Trung
XÂY DỰNG SEARCH ENGINE
LUẬN VĂN THẠC SĨ
Hà Nội – 2009
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Hoàng Trung
XÂY DỰNG SEARCH ENGINE
Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số: 60 48 10
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS.Nguyễn Tuệ
Hà Nội – 2009
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của bản thân. Các số liệu, kết quả
trình bày trong luận văn này là trung thực. Những tư liệu được sử dụng trong luận văn
có nguồn gốc và trích dẫn rõ ràng, đầy đủ.
Học viên
Nguyễn Hoàng Trung
LỜI CẢM ƠN
Trước hết, tôi xin được nói lời cảm ơn đến gia đình hai bên nội ngoại đã động
viên tôi rất nhiều trong suốt thời gian học tập và nghiên cứu.
Tôi xin được gửi lời cảm ơn tới bộ môn Công nghệ phần mềm, khoa Công nghệ
thông tin trường Đại học Công nghệ - Đại Học Quốc Gia Hà nội đã tạo điều kiện cho
tôi thực hiện đề tài này. Tôi xin được cảm ơn TS. Nguyễn Tuệ, người đã trực tiếp
hướng dẫn tôi hoàn thành đề tài này.
Tôi cũng xin được gửi lời cảm ơn tới Công ty NAiSCorp, những người đồng đội,


đồng chí đã chiến đấu cùng tôi vì một mục tiêu mang tri thức đến với người Việt. Tôi
cũng xin được gửi lời cảm ơn tới bạn bè tôi, những người đã giúp đỡ tôi rất nhiều
Mặc dù có nhiều cố gắng nhưng do đề tài này quá lớn nên chắc chắn luận văn
này còn có nhiều thiếu sót. Tôi rất mong nhận được những ý kiến đóng góp quý báu
của những độc giả quan tâm. Mọi góp ý xin gửi về
Tác giả
Nguyễn Hoàng Trung
MỤC LỤC
I
LỜI CẢM ƠN II
MỤC LỤC III
DANH MỤC HÌNH VẼ V
DANH MỤC BẢNG BIỂU VI
DANH MỤC CÁC TỪ VIẾT TẮT VII
MỞ ĐẦU GIỚI THIỆU LUẬN VĂN 1
1. MỤC ĐÍCH

1
2. LÝ DO LỰA CHỌN ĐỀ TÀI

1
3. BỐ CỤC LUẬN VĂN

2
CHƯƠNG 1. LÝ THUYẾT CHUNG VỀ SEARCH ENGINE 5
1.1. TỔNG QUAN VỀ MẠNG INTERNET VÀ SEARCH ENGINE

5
1.2. CÁC MÔ HÌNH KIẾN TRÚC CỦA SEARCH ENGINE


6
1.2.1. Mô hình kiến trúc chung 6
1.2.2. Mô hình agent 9
1.3. PHÂN LOẠI SEARCH ENGINE

10
1.4. INFORMATION RETRIEVAL VÀ SEARCH ENGINE

10
1.4.1. Định nghĩa và khái niệm 11
1.4.2. Kiến trúc của một hệ IR 11
1.4.3. Các độ đo (metrics) 13
1.4.4. Chỉ mục ngược (inverted index) trong tìm kiếm 14
1.4.5. Các mô hình IR trong tìm kiếm và đánh giá kết quả 16
1.4.6. Từ dừng 20
1.4.7. Stemming 20
1.5. WEB CRAWLER

21
1.5.1. Giới thiệu 21
1.5.2. Các chiến lược lựa chọn trang Web trong quá trình crawl 23
1.5.3. Tăng tốc độ crawl và crawl song song 28
1.5.4. Làm tươi trang Web (pages refresh) 31
1.6. LƯU TRỮ DỮ LIỆU

32
1.6.1. Giới thiệu 32
1.6.2. Khó khăn và thách thức 33
1.6.3. Lưu trữ phân tán (distributed repository) 33
1.7. XÂY DỰNG CHỈ MỤC TỪ


36
1.7.1. Giới thiệu 36
1.7.2. Chỉ mục ngược trong Search engine 37
1.7.3. Khó khăn, thách thức 40
1.7.4. Index partitioning 40
1.8. TÌM KIẾM

41
1.9. XẾP HẠNG KẾT QUẢ TÌM KIẾM

43
1.9.1. PageRank 44
1.9.2. HITS 46
1.9.3. Một số kỹ thuật dựa liên kết khác 49
CHƯƠNG 2. KHẢO SÁT MỘT SỐ SEARCH ENGINE 50
2.1. SEARCH ENGINE MÃ MỞ LUCENE

50
2.1.1. Giới thiệu Lucene 50
2.1.2. Các phiên bản ngôn ngữ khác của Lucene 51
2.1.3. Vòng đời kiến trúc phần mềm Lucene 52
2.1.4. Sơ đồ phụ thuộc của Lucene.Net 52
2.1.5. Các lớp của Lucene.Net 53
2.2. TIẾNG VIỆT TRONG XÂY DỰNG CÔNG CỤ TÌM KIẾM

55
2.2.1. Đặc điểm của ngữ âm và âm vị 55
2.2.2. Đặc trưng về từ pháp và hình thái 55
2.2.3. Đặc trưng về ngữ pháp 56

2.2.4. Sự phức tạp trong mã hoá tiếng Việt 57
2.2.5. Unicode và chuẩn hoá cách mã hoá tiếng Việt 58
2.3. KHẢO SÁT CÁC CÔNG CỤ TÌM KIẾM TIẾNG VIỆT HIỆN NAY

59
2.3.1. Search Engine Google 59
2.3.2. Search Engine Xalo (www.Xalo.vn) 59
2.3.3. Search Engine Baamboo (www.Baamboo.com.vn) 60
2.3.4. Search Engine Socbay(www.Socbay.com) 60
2.4. ĐÁNH GIÁ VỀ CÁC CÔNG CỤ TÌM KIẾM TIẾNG VIỆT

60
CHƯƠNG 3. XÂY DỰNG CÔNG CỤ MP3 SEARCH 62
3.1. CRAWLER CHO TÌM KIẾM MP3

62
3.1.1. Các vấn đề đặt ra với crawler 62
3.1.2. Các chiến lược lựa chọn trang Mp3 trong quá trình crawl 63
3.1.3. Tăng tốc độ crawl và crawl song song 64
3.1.4. Làm tươi trang Mp3 (pages refresh) 64
3.1.5. Kho lưu trữ cho tìm kiếm MP3 64
3.1.6. Đánh chỉ mục cho tìm kiếm MP3 65
3.1.7. Chỉ mục trong từ điển âm nhạc 69
3.1.8. Chỉ mục ngược trong từ điển âm nhạc 70
3.1.9. Khó khăn, thách thức của việc đánh chỉ mục 71
3.2. TÌM KIẾM MP3

72
3.2.1. Phân tích truy vấn 72
3.2.2. Tìm kiếm 72

3.2.3. Xếp hạng cho MP3 73
3.2.4. Giao diện của MP3 74
3.2.5. Đánh giá phần mềm tìm kiếm MP3 75
PHẦN KẾT LUẬN 76
1. NHỮNG ĐÓNG GÓP CỦA LUẬN VĂN

76
2. HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI

76
TÀI LIỆU THAM KHẢO 78
Tiếng Việt 78
Tiếng Anh 78
PHỤ LỤC 80
PHỤ LỤC A. KIẾN TRÚC GOOGLE

80
PHỤ LỤC B. CÁC KHÁI NIỆM VỀ SEARCH ENGINE

82
PHỤ LỤC C. THUẬT TOÁN VUN ĐỐNG HEAPSORT CHO TÌM KIẾM

87
PHỤ LỤC D. BẢNG MÃ HOÁ CHỮ CÁI TIẾNG VIỆT

90
CHỈ MỤC TỪ 96
DANH MỤC HÌNH VẼ
HÌNH 1. MÔ HÌNH KIẾN TRÚC CHUNG CỦA SEARCH ENGINE[14] 7
HÌNH 2. KIẾN TRÚC AGENT CỦA SEARCH ENGINE 10

HÌNH 3. MÔ HÌNH ĐƠN GIẢN CỦA MỘT HỆ IR 12
HÌNH 4. MÔ HÌNH ĐÁNH CHỈ MỤC CỦA HỆ IR[14] 12
HÌNH 5. MÔ HÌNH TRUY VẤN CỦA HỆ IR[14] 13
HÌNH 6. MINH HỌA PRECISION/RECALL 14
HÌNH 7. VÍ DỤ CẤU TRÚC CỦA CHỈ MỤC NGƯỢC 15
HÌNH 8. GIẢI THUẬT XÂY DỰNG CHỈ MỤC NGƯỢC (1) 15
HÌNH 9. GIẢI THUẬT XÂY DỰNG CHỈ MỤC NGƯỢC ĐẦY ĐỦ (2) 16
HÌNH 10. VÍ DỤ ĐƠN GIẢN VỀ VSM 18
HÌNH 11. CHUẨN HÓA ĐỘ DÀI CỦA TÀI LIỆU 20
HÌNH 12. MÔ PHỎNG TÌM KIẾM THEO CHIỀU RỘNG 27
HÌNH 13. MÔ PHỎNG TÌM KIẾM THEO CHIỀU SÂU 28
HÌNH 14. KIẾN TRÚC CHUNG CỦA CRAWLER SONG SONG 30
HÌNH 15. TẬP GỒM HAI TRANG WEB VỚI TỐC ĐỘ THAY ĐỔI KHÁC NHAU 32
HÌNH 16. WEBBASE REPOSITORY ARCHITECTURE 35
HÌNH 17. PAGERANK ĐƠN GIẢN VÀ PAGERANK CÓ SỬA ĐỔI (D=0.8) 45
HÌNH 18. VÍ DỤ GIẢI THUẬT HITS 49
HÌNH 19. VÒNG ĐỜI CỦA LUCENE 52
HÌNH 20. SƠ ĐỒ PHỤ THUỘC CỦA LUCENE VỚI MÔI TRƯỜNG 52
HÌNH 21. BIỂU ĐỒ PHẦN TRĂM MÃ CODE CHO MODULE LUCENE 53
HÌNH 22. SƠ ĐỒ PHỤ THUỘC MODULE CỦA LUCENE 55
HÌNH 23: MÔ HÌNH TÁCH TỪ KHÓA TỪ VĂN BẢN THÔ 69
HÌNH 24. KIẾN TRÚC GOOGLE 80
DANH MỤC BẢNG BIỂU
BẢNG 1. GIẢI THUẬT XỬ LÝ TRUY VẤN DẠNG AND 17
BẢNG 2. TỔNG KẾT HIỆU NĂNG CỦA CÁC PHƯƠNG PHÁP TỔ CHỨC LƯU TRỮ VẬT LÝ WEB
34
BẢNG 3 TÁCH TERM TỪ TÀI LIỆU 38
BẢNG 4. SẮP XẾP LẠI CÁC TERM 39
BẢNG 5. THÀNH LẬP TỪ ĐIỂN VÀ FILE POSTINGS 40
BẢNG 6. VÍ DỤ VỀ TÌM KIẾM AND TRONG MÔ HÌNH BOOLEAN 42

BẢNG 7. DANH SÁCH PHỤ THUỘC MODULE CỦA LUCENE 54
BẢNG 8. KẾT QUẢ TEST TỪ TRÊN CÁC CÔNG CỤ 61
BẢNG 9. CẤU TRÚC CÁC TRƯỜNG CỦA MP3 66
BẢNG 10. TÁCH TERM TỪ TÀI LIỆU 70
BẢNG 11. DANH SÁCH CÁC TERM THEO ID VĂN BẢN 70
BẢNG 12. DANH SÁCH TỪ THEO VĂN BẢN VÀ TẦN SỐ XUẤT HIỆN 71
BẢNG 13. DANH SÁCH TỪ VÀ THÔNG TIN VỀ TỪ THEO VĂN BẢN VÀ TẦN SỐ XUẤT HIỆN 71
BẢNG 14. THUẬT TOÁN MERGE 2 DANH SÁCH ĐƠN GIẢN 73
BẢNG 15. DANH SÁCH CÁC TRƯỜNG ĐƯỢC RANK 74
BẢNG 16. MÃ HOÁ CHỮ CÁI TIẾNG VIỆT BẰNG CÁC BỘ MÃ KHÁC NHAU 90
DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt Cụm từ xuất phát
BVSM Binary Vector Space Model
CGI Common Gateway Iinterface
DL Document Length
DR Data Retrieval
FTP File Transfer Protocol
HITS Hypertext Induced Topic Search
HTML Hyper Text Markup Language
HTTP Hyper Text Transfer Protocol
HTTPS HTTP Secure
IDF Inverse Document Frequency
IR Information Retrieval
NNTP Network News Transport Protocol
QAM Question Answer Machine
REP Robot Exclution Protocol
SC Similarity Coefficency
SE Search Engine
TCVN3 Tiêu chuẩn Việt Nam 3
TF Term Frequency

URL Uniform Resource Locator
UTF Unicode Transformation Format
VIQR VIetnamese Quoted-Readable
VISCII VIetnamese Standard Code for Information Interchange
VPS Vietnamese Profestional Society
VSM Vector Space Model
1
MỞ ĐẦU
GIỚI THIỆU LUẬN VĂN
1. MỤC ĐÍCH
Search Engine là một khái niệm dùng để chỉ chương trình tìm kiếm các tài liệu
(thuộc các dạng khác nhau: text, video, MP3…) thoả mãn một số điều kiện nào đó mà
ta gọi là truy vấn (query) của người dùng. Tuy nhiên, khái niệm Search Engine từ lâu
đã được gắn với việc tìm kiếm tài liệu dạng text (Document Search) trên mạng Internet
và trên máy tính cá nhân (Desktop Search)
Trong giai đoạn mà các nhu cầu tìm kiếm thông tin trên mạng Internet cũng
như tìm kiếm tài liệu tiếng Việt nói chung đang được quan tâm, đề tài này được phát
triển với mục đích chính là mô tả các thành phần chung của một hệ tìm kiếm và xây
dựng một Engine tìm kiếm MP3 trên Internet. Engine này phải giải quyết được các vấn
đề tìm kiếm trong tiếng Việt.
2. LÝ DO LỰA CHỌN ĐỀ TÀI
Cùng với sự phát triển của Internet, lượng thông tin trên mạng ngày càng nhiều.
Thậm chí, người ta ước tính sự tăng trưởng ấy là theo cấp số nhân. Theo một nghiên
cứu thì cứ khoảng 5 năm, trí tuệ nhân loại lại tăng lên gấp đôi. Với lượng thông tin
khổng lồ trên mạng như hiện nay, Search Engine thực sự là một “công cụ” tối cần thiết
cho người dùng Internet khai thác, tìm kiếm thông tin. Khái niệm về Search Engine đã
có từ khá sớm và trên thế giới đã có rất nhiều nghiên cứu về Search Engine và các vấn
đề liên quan, đặc biệt là lĩnh vực truy xuất thông tin, (Information Retrieval - IR) sẽ
được trình bày trong tài liệu này. Một trong những nghiên cứu đó là nghiên cứu của
trường đại học Standford, Mỹ về Search Engine mà kết quả của nó là Google, một

trong số các Search Engine hàng đầu hiện nay.
Để xây dựng một Search Engine cần phải biết rất nhiều vấn đề lý thuyết liên
quan, trong đó có các lý thuyết về mạng máy tính, ngôn ngữ, lý thuyết về IR, cấu trúc
dữ liệu và giải thuật, cơ sở dữ liệu, tối ưu hóa, tính toán song song, xử lý phân tán…
Đề tài Search Engine là một trong những đề tài nghiên cứu mang tính lý thuyết cũng
như thực tế cao. Vì thế, đã có khá nhiều nghiên cứu trong và ngoài nước về Search
Engine
Tình hình nghiên cứu ở nước ngoài: Có khá nhiều công ty và tổ chức nghiên
cứu về Search, nổi bật nhất là 3 công ty Google, Yahoo và Micrsoft. Các sản phẩm mã
nguồn mở thì nổi bật nhất là Lucene. Chất lượng của các công cụ tìm kiếm này cũng
rất khác nhau. Các công cụ này luôn cố gắng xuất phát từ việc tìm kiếm tiếng Anh và
sau đó mở ra đa ngôn ngữ, trong đó có tiếng Việt. Với tìm kiếm tiếng Việt thì tốt nhất
chính là Google. Google có hệ thống máy chủ tốt, lượng dữ liệu khổng lồ, tốc độ cập
2
nhật khá nhanh, thuật toán tìm kiếm tốt, vì thế nó được khá nhiều người Việt tin dùng.
Sản phẩm có chất lượng tốt thứ hai là Bing của Microsoft thì đã đang được cải thiện
chất lượng và bắt đầu có những áp dụng với tiếng Việt. Công ty Yahoo với sản phẩm
Yahoo Search thì chất lượng nói chung là kém hơn với 2 sản phẩm nói trên và sản
phẩm này vẫn còn kém hơn so với những sản phẩm của công ty Việt.
Tình hình nghiên cứu ở trong nước: Hiện tại ở Việt Nam, cũng có khá nhiều
nhiều công ty làm về Search như Baamboo, Zing, Xalo Tuy nhiên, làm Search Web
thực sự thì chỉ có 2 công ty là Tinh Vân và NaiSCorp. Công ty Tinh Vân có truyền
thống làm Search với sản phẩm mã nguồn mở truyền thống là VinaSeek từ nhiều năm
trước đây nhưng bây giờ không còn sử dụng. Sau đó, công ty Tinh Vân mua sản phẩm
tìm kiếm Xalộ của công ty FastSearch, và có áp dụng những module tiếng Việt vào để
biến công cụ này thành một Search Engine tiếng Việt. NaiSCorp là công ty phát triển
từ một nhóm sinh viên nghiên cứu khoa học của trường ĐH Bách khoa Hà nội và ĐH
Công nghệ - ĐH Quốc Gia Hà Nội. Nhóm sinh viên này đã có nhiều giải thưởng về
nghiên cứu tìm kiếm tiếng Việt. Tháng 7 năm 2006, công NaiSCorp được thành lập và
nhanh chóng cho ra đời công cụ tìm kiếm Socbay.com. Đây là một công cụ tìm kiếm

tiếng Việt khá tốt, tỏ ra có hiểu tiếng Việt và thói quen sử dụng của người Việt. Tuy
nhiên, những sản phẩm tìm kiếm của Việt nam vẫn chưa thể chiếm lĩnh được thị
trường và cạnh tranh được với Google.
Với yêu cầu của thực tế đặt ra là rất cần thiết và cấp bách, chúng tôi tin rằng
nghiên cứu tìm kiếm để sản phẩm Việt có thể chiếm lĩnh thông tin trên Internet để có
thể đem lại thông tin và tri thức cho người Việt là rất cần thiết. Chúng tôi cho rằng,
lĩnh vực này chính là công nghệ lõi để làm nền tảng xây dựng những công nghệ khác
phía trên nó. Đó là lý do chúng tôi chọn đề tài này để nghiên cứu.
3. BỐ CỤC LUẬN VĂN
Luận văn gồm 3 chương, với nội dung cụ thể từng chương như sau:
Chương 1: Chúng tôi trình bày kỹ về các thành phần của một Search Engine.
Một Search Engine có thể coi là một dạng Information Retrieval (IR) tức là một hệ
truy xuất thông tin, bao gồm các công việc như “thu thập thông tin” – tương ứng với
Search Engine chính là Crawler, “lưu trữ thông tin” – tương ứng với phần Page
Repository, “khai thác thông tin” – tương ứng với phần phân tích câu truy vấn, tìm
kiếm và xếp hạng để đưa ra kết quả. Lý thuyết của phần IR có liên quan mật thiết tới
việc xây dựng Search Engine. Chi tiết phần thông tin này có ở mục 2.4
Search Engine bao gồm những thành phần chính là:
Crawler là chương trình có nhiệm vụ khai phá và tải dữ liệu các trang Web từ
mạng Internet về hệ thống. Do đó, làm sao tải cho nhanh, nhiều, đủ, kịp thời đòi hỏi
phải có một chiến thuật hợp lý. Muốn nhanh, người ta có thể tăng số Crawler, như vậy
phải giải quyết bài toán phân tán. Muốn nhiều, người ta không chỉ giải quyết bài toán
3
phân tán mà còn quyết định xem là cố gắng đi rộng ra cho được nhiều trang Web hay
đi sâu vào tận cùng của từng trang Web. Có nhiều chiến thuật khác nhau đáp ứng yêu
cầu này. Muốn đủ và kịp thời người ta phải quyết định tốc độ cập nhật của crawler đối
với từng trang Web. Có rất nhiều nội dung chi tiết về lý thuyết Crawler nằm ở mục
2.5.
Page Repository là một hệ lưu trữ cho một bộ sưu tập khổng lồ các trang Web.
Về mặt bản chất, nó là hệ lưu trữ các đối tượng dữ liệu, tuy nhiên, khi số lượng trang

Web là vô cùng khổng lồ thì bài toán lại không hề đơn giản. Người ta cố gắng phân tán
hóa hệ thống, nhưng với phạm vi toàn cầu và lượng thông tin cập nhật khổng lồ tại
mỗi thời điểm thì bài toán này cũng không hề dễ dàng. Mục 2.6 nói rõ hơn về việc
này.
Index: Chính là chỉ mục từ. Có thể coi đây là một cách tổ chức lại thông tin sao
cho nó tạo nên một bảng tra cứu mà từ các Url có thể biết được các từ nằm trong nó.
Từ bảng chỉ mục này, người ta tạo ra một chỉ mục ngược (Invert List). Tức là với mỗi
từ, ta có thể biết được tất cả các URL chứa từ đó. Nội dung này ở mục 2.7
Searching: Đây là công việc chính và quan trọng nhất của hệ thống. Muốn
Search được, đầu tiên người ta phải phân tích truy vấn, sau đó dựa vào Invert List để
tìm ra những kết quả phù hợp. Mục 2.8 nêu những vấn đề của Searching
Ranking: Nếu sau khi tìm kiếm, ta được quá nhiều kết quả nhìn chung là phù
hợp với truy vấn. Vậy thì chọn kết quả nào cho đúng? Đưa kết quả nào ra đầu tiên cho
người sử dụng? Đó là cả một bí mật công nghệ của các công ty. Mục 2.9 giới thiệu qua
về Page Rank và giải thuật HITS là những cách tính rank thông dụng và được công bố.
Những nội dung trong Chương 1 là rất quan trọng với chúng tôi. Chúng tôi tìm
hiểu những công nghệ Search nói chung ở mức khá sâu để có thể sử dụng những kiến
thức ấy để khảo sát một số Search Engine và xây dựng công cụ tìm kiếm Mp3 cho
mình
Chương 2: Khảo sát một số Search Engine.
Chúng tôi khảo sát một công cụ tìm kiếm tiếng Anh thuần túy, mã nguồn mở là
Lucene để biết kiến trúc phần mềm của nó. So sánh các thành phần của nó, các nỗ lực
viết code cho mỗi phần so với cấu trúc chung về Search Engine cho chúng tôi thấy rõ
hơn về các phần của hệ thống.
Ở phần 3.2 chúng tôi trình bày về các vấn đề liên quan đến tiếng Việt và sự
khác nhau của tìm kiếm tiếng Việt với tìm kiếm tiếng Anh. Nội dung này làm tiền đề
để chúng tôi khảo sát 3 công cụ tìm kiếm tiếng Việt ở mục 3.3. Các công cụ chúng tôi
lựa chọn là Google, Xalo và Socbay. Chúng tôi so sánh để thấy rằng các công cụ được
nêu ở trên là chưa hoàn hảo. Đấy là động lực để chúng tôi tiếp tục nghiên cứu một ứng
dụng tìm kiếm để minh họa cho lý thuyết tìm kiếm đã nêu ở Chương 1

4
Chương 3: Chúng tôi xây dựng một ứng dụng nhỏ là Mp3 Search. Áp dụng
những kiến thức thu được từ việc nghiên cứu từ chương 1, chúng tôi bắt tay vào xây
dựng một công cụ tìm kiếm thực sự. Chúng tôi mô tả từng bước của quá trình xây
dựng Mp3 và so sánh công việc đó so với những việc cần làm trong việc xây dựng một
công cụ tìm kiếm Web. Vì trong chương 1, chúng tôi đã phân tích rất kỹ các thành
phần và độ phức tạp trong việc xây dựng của mỗi thành phần của công cụ Search nói
chung rồi, nên khi áp dụng vào bài toán này, chúng tôi không gặp nhiều khó khăn. Qua
việc xây dựng một công cụ nhỏ này, chúng tôi hiểu rõ hơn về sự phức tạp và khó khăn
của công việc xây dựng Search Engine cho Web
5
CHƯƠNG 1.
LÝ THUYẾT CHUNG VỀ SEARCH ENGINE
1.1. TỔNG QUAN VỀ MẠNG INTERNET VÀ SEARCH ENGINE
Không có định nghĩa chính xác nào về thông tin. Khái niệm thông tin gắn liền
với sự ra đời của máy tính và ngành công nghệ thông tin. Có thể hiểu thông tin là “tin
tức hay sự thật về một cái gì đó”. Thông tin mang đến cho con người sự cảm nhận về
thế giới bên ngoài.
Tùy theo kiểu mẫu, nội dung, chất lượng, cách thức lưu trữ, cách truyền đạt…
của thông tin mà ta có thể chia ra nhiều loại thông tin khác nhau. Sự ra đời của mạng
Internet (mạng của các mạng máy tính) đã kéo theo một loại thông tin đó là thông tin
mạng.
Thông tin trên mạng bao gồm rất nhiều kiểu, được lưu trữ ở khắp nơi trên thế
giới. Dạng chính của thông tin trên mạng chính là các trang tài liệu được viết bằng
ngôn ngữ đánh dấu siêu văn bản HTML(Hyper-Text Markup Language) mà ta quen
gọi là trang Web (Web page). Tập hợp các trang Web tạo thành Web. Số lượng trang
Web hiện tại là cực kỳ lớn. Có thể đến hàng triệu tỷ pages, và do dó tổng dung lượng
của tất cả các trang Web có thể đến hàng nghìn terabytes. Nội dung các trang Web có
thể nhiều hoặc ít tùy theo trang, số người biên tập, số người sử dụng, quản trị …. Vì
thế việc kiểm soát chúng là không đơn giản. Giữa một khối lượng thông tin khổng lồ

như vậy, việc người dùng biết và chọn ra cho mình những thông tin cần thiết không hề
dễ chút nào. Người dùng sẽ phải bắt đầu khai thác nguồn thông tin khổng lồ này như
thế nào? Thông thường người dùng sẽ sử dụng một công cụ cho phép truy cập các
nguồn tài nguyên đó, gọi là trình duyệt Internet (Internet browser). Trình duyệt sẽ giao
tiếp với các chương trình cung cấp thông tin dưới dạng trang Web gọi là Web server
được chạy trên các máy tính lớn (server) của các nhà cung cấp thông tin. Trình duyệt
và Web server giao tiếp với nhau bằng giao thức HTTP (Hyper-Text Transfer
Protocol) là một giao thức truyền văn bản theo định dạng siêu văn bản. Trong tình
huống này người dùng phải biết chính xác Web server nào có chứa thông tin mình cần
đến, hay nói cách khác là địa chỉ của trang Web mà người dùng muốn truy cập. Mỗi
địa chỉ trang Web được gọi là một URL (Uniform Rescourse Locator).
URL có cấu trúc:
http://tên_máy_chủ.tên_miền/đường_dẫn_cục_bộ_đến_trang_Web. Một tập
hợp các trang Web có chung tên miền được gọi là một Website (ví dụ như Website của
trường đại học Quốc gia Hà nội có tên miền là vnu.edu.vn). Người dùng viếng thăm
nhiều trang Web sẽ không thể nhớ hết các địa chỉ (thường là dài và khó nhớ). Hơn
nữa, sự ra đời của các trang Web mới là đáng kể, trong khi đó người dùng không biết
6
đến chúng nếu như không được chỉ dẫn. Trong trường hợp người dùng không biết địa
chỉ của trang Web có chứa thông tin mà họ cần, họ sẽ phải bắt đầu như thế nào? Hai
câu trả lời là danh bạ Web (Web directory) và mô tơ tìm kiếm thông tin trên mạng
(Search engine).
Danh bạ Web là một Web site chứa các liên kết đến rất nhiều trang Web khác
nhau trên thế giới, được sắp xếp theo các chủ đề. Người dùng truy cập danh bạ Web và
lần theo các chủ đề, rồi các chủ đề con, … họ sẽ có được một danh sách các trang Web
về lĩnh vực mà họ quan tâm. Một trong số các Website cung cấp danh bạ Web tốt nhất
hiện nay là Yahoo (). Chẳng hạn ta có thể tìm thấy địa chỉ trang
Web của hầu hết các trường đại học trên thế giới trong mục Education của Yahoo.
Search Engine không cung cấp danh sách các trang Web như Web directory.
Mỗi khi người dùng cần thông tin mà không biết địa chỉ trang Web, họ sẽ truy cập

Search Engine ưa thích của họ bằng trình duyệt (bản thân Search Engine cũng là một
Web site), nói cho Search Engine biết họ cần thông tin gì bằng cách nhập vào các từ
khóa cho thông tin cần tìm. Từ khóa ở đây là từ ngữ thông thường có liên quan đến
thông tin cần tìm. Chẳng hạn muốn tìm thông tin về Search Engine có thể sử dụng từ
khóa “Search”, “Search engine”, … Search Engine sẽ tiến hành phân tích yêu cầu tìm
kiếm đó, thực hiện tìm theo sự hiểu biết của nó (tìm trên cơ sở dữ liệu về Web mà nó
có được) và trả lại cho người dùng danh sách các URL dẫn đến các trang Web mà nó
tìm được (đã có sự sắp xếp) và một phần nội dung được trích rút ra (extractor) từ trang
Web có chứa từ khóa cần tìm. Đứng trên khía cạnh này thì Search Engine chính là một
Search Engine trả lời câu hỏi QAM (Question Answer Machine).
Ngày nay, khái niệm Search Engine đã trở nên khá phổ biến và Search Engine
là một trong số những công cụ (dịch vụ) được người dùng sử dụng nhiều nhất trên
mạng Internet. Google () là một trong số các Search Engine cho
các kết quả tìm kiếm chính xác nhất hiện nay.
1.2. CÁC MÔ HÌNH KIẾN TRÚC CỦA SEARCH ENGINE
1.2.1. Mô hình kiến trúc chung
Hình sau đây đưa ra kiến trúc mức cao của một Search Engine, trong đó các
thành phần của kiến trúc này đảm nhiệm các chức năng khá cụ thể:
7
Hình 1. Mô hình kiến trúc chung của Search engine[14]
Crawler là chương trình có nhiệm vụ khám phá và tải về các trang Web từ
mạng Internet. Chúng dõi theo các trang Web giống như người dùng duyệt Web.
Crawler xuất phát với tập các URLs khởi đầu, sau khi tải các trang Web về, Crawler
tách các URLs trong trang Web đó ra, chuyển cho Crawl Control (Bộ điều khiển
crawl). Bộ điều khiển sẽ quyết định liên kết nào sẽ được khám phá tiếp theo và trả lại
cho crawler. (Một số chức năng của bộ điều khiển đôi khi được crawler tự thực hiện).
Crawler cũng đồng thời chuyển các trang Web đã khám phá được vào kho dữ liệu Web
(pages repository) và tiếp tục khám phá Web cho tới khi nào không còn gì để khám
phá hoặc bị cạn tài nguyên hay được lệnh dừng, …
Giải thuật cơ bản này có thể được sửa chữa nhằm đạt được hiệu quả tốt nhất

theo một nghĩa nào đó. Ví dụ crawler của một Search Engine nào đó được thiết kế để
khám phá càng nhiều Web site càng tốt, bỏ lại các trang Web bị “vùi sâu” trong một
site (đường đến các trang Web này dài và phức tạp) trong khi crawler của một Search
Engine khác lại được giao nhiệm vụ khám phá một vùng (domain) nào đó. Bộ điều
khiển crawler nắm giữ vai trò điều khiển, hướng hoạt động cho các crawlers.
Khi Search Engine ít nhất một lần hoàn thành một vòng crawl, bộ điều khiển có
thể nhận được thông báo bởi vài chỉ mục (indexes) được tạo ra trong quá trình khám
phá trước đó. Bộ điều khiển căn cứ vào chỉ mục để quyết định xem những liên kết nào
nên viếng thăm, những liên kết nào nên bỏ qua. Bộ điều khiển đôi khi sử dụng thông
8
tin phản hồi từ phía Query Engine để điều khiển crawler (được thể hiện qu mũi tên nối
Query Engine và Crawl control trong mô hình kiến trúc).
Việc viếng thăm lại một trang Web nào đó để kiểm tra xem trang Web đó có
cập nhật thông tin gì mới đòi hỏi tài nguyên khá lớn. Nó sẽ bao gồm những công việc
kết nối đến Website, tải dữ liệu về và so sánh với dữ liệu cũ đã có để chống trùng. Sau
khi kiểm tra việc dữ liệu có bị lặp giữa một trang với nhau và các nguồn khác nhau,
chương trình mới quyết định có cập nhật hay không. Như vậy, việc này đòi hỏi tiêu
tốn cả CPU bên crawler, đường truyền mạng và cả thời gian trả lời của host chứa
thông tin, thời gian để kiểm tra xem dữ liệu có trùng không. Trong lĩnh vực các trang
Web dạng báo chí (news) hiện tượng trùng lặp thông tin do các báo dẫn lại thông tin
của nhau hiện nay là rất nhiều. Trong lĩnh vực hàng hóa hoặc rao vặt, việc request
kiểm tra cập nhật cho các trang con dễ làm Server bên phục vụ quá tải. Bởi vì những
trang Web này có rất nhiều trang con vì mỗi sản phẩm được rao bán đòi hỏi phải có
một trang con riêng biệt, và có rất nhiều sản phẩm được rao bán và do đó, mỗi khi
Crawler gửi yêu cầu (request) đến, các Website loại này đều phải tạo những trang con
có nội dung để trả lời. Nếu bên Crawler sử dụng quá nhiều server và gửi quá nhiều
request thì nó cũng chẳng khác DDOS bao nhiêu.
Tất nhiên, tốc độ cập nhật của các trang Web khác nhau cũng rất khác nhau.
Với những trang báo như Vnexpress.net thì thời gian cập nhật sẽ nhanh hơn rất nhiều
so với những trang Web của các trường đại học như coltech.vnu.edu.vn. Do đó, việc

cập nhật các trang Web với khoảng thời gian bao lâu, việc thỏa thuận giữa phía
crawler với bên server chứa thông tin cũng cần phải được tính toán và cân nhắc.
Indexer module (mô-đun đánh chỉ mục) tách các từ cần thiết có trong mỗi trang
Web, ghi lại URL của trang Web có chứa chúng. Kết quả là hình thành nên một bảng
tra cứu mà từ các URLs có thể biết được các từ có trong văn bản của URL đó. Index
có thể coi là một cách tái tổ chức lại văn bản theo một cách riêng để phục vụ cho việc
tìm kiếm. Với một cách tổ chức dữ liệu khác nhau, ta có thể có cách tìm kiếm khác
nhau
Collection analysis module (mô-đun phân tích tập) Một module phân tích tập
các Index nhằm rút ra các thông tin quan trọng có thể tính off_line với mục đích cho
việc tìm kiếm dễ dàng và nhanh chóng hơn.
Utility index trong hình vẽ được tạo ra bởi collection analysis module. Ví dụ
như utility index cho biết các trang Web có có chiều dài, mức độ quan trọng hay thậm
chí là số lượng ảnh có trong nó cho trước. Collection analysis module sử dụng text
index và structure index để tạo ra utility index.
Trong quá trình khám phá Web và đánh chỉ mục, Search Engine có thể sẽ lưu
trữ lại các trang Web mà nó tải về từ mạng. Kho dữ liệu trang Web (Page repository)
trong hình vẽ dùng để lưu trữ tập các trang Web này một cách tạm thời. Đôi khi,
9
Search Engine bảo lưu cả nội dung của trang Web mà nó viếng thăm (cache) ngoài
việc đánh chỉ mục các trang Web. Cache sẽ giúp ích trong việc đưa ra các kết quả
nhanh chóng và mang lại một số thuận lợi trong việc tìm kiếm.
Query engine có nhiệm vụ nhận và thực hiện yêu cầu tìm kiếm từ phía người
dùng. Nó phụ thuộc khá nhiều vào indexes và đôi khi phụ thuộc vào cả kho dữ liệu
trang Web. Kích thước của Web thì lớn trong khi người dùng chỉ gõ vào một vài từ để
tìm kiếm nên số lượng kết quả tìm được cũng sẽ lớn. Mô-đun xếp hạng (ranking
module) sẽ thực hiện sắp xếp các kết quả tìm kiếm sao cho các kết quả gần với truy
vấn nhất được đưa lên đầu. Mô-đun truy vấn là phần cần được quan tâm đặc biệt vì các
kỹ thuật truyền thống trong Information Retrieval được áp dụng vào trong tìm kiếm
cần phải có sự sửa đổi cho phù hợp. Thông thường các kỹ thuật dựa trên sự so sánh

mức độ tương tự (relevancy) giữa yêu cầu tìm kiếm (query text) và tài liệu trong “bộ
sưu tập” của Search engine. Một yêu cầu tìm kiếm “nhỏ bé” so với một bộ sưu tập
“cực lớn” sẽ hạn chế cách tiếp cận dựa trên độ tương tự văn bản nói trên.
Có thể tham khảo thêm kiến trúc của Google tại phụ lục A để hiểu thêm về kiến
trúc của Search engine. Chúng ta sẽ đi chi tiết vào từng thành phần trong Search
Engine sau đây.
1.2.2. Mô hình agent
Mô hình được đưa ra sau đây là một trong số các mô hình tựa agent (Agent-
based model) của Search engine, trong đó:
Crawling Agent Community: Nhóm các agents có nhiệm vụ tải các trang
HTMLs về từ Web (tương đương với spiders hay robots).
URL Broker Agent: Quản lý các thông tin về Web và cung cấp cho các bots
dưới dạng các URLs.
Filtering Agent Community: Mỗi khi một bot tải một trang một trang HTML,
filter agent sẽ thu nhận nó và thực hiện thao tác trích rút nội dung của nó. Kết quả của
quá trình đó ở dạng text và được lưu trữ lại.
Indexer Agent: Một khi số lượng các trang HTML đã được tách lọc (filter) bởi
Filtering Agent, Indexer Agent sẽ thực hiện đánh chỉ mục. Kết thúc việc đánh chỉ mục
sẽ cho ra một cấu trúc dữ liệu đã được đánh chỉ mục, rất thích hợp cho việc tìm kiếm
và gọi ra thông tin cần thiết sau này.
Query Agent Community: Một vài loại agent này khi cần sẽ truy cập cơ sở dữ
liệu đã được đánh chỉ mục để tìm kiếm ra các thông tin cần thiết, tương ứng với các
yêu cầu của người dùng.
Interface Agent Community: Thực chất đây là mô-đun kiểm soát giao diện tìm
kiếm cho người dùng, thực hiện thao tác lấy yêu cầu tìm kiếm và trả về thông tin tìm
được
10
Hình 2. Kiến trúc agent của Search engine.
1.3. PHÂN LOẠI SEARCH ENGINE
Tiêu chí phân loại được quan tâm ở đây là dựa trên kiến trúc của các hệ thống.

Như đã trình bày ở trên, Search Engine khác với Web directory. Danh bạ Web là một
công cụ tìm kiếm địa chỉ trang Web còn Search Engine là mô-tơ tìm kiếm thông tin.
Web directory chứa một số lượng lớn các chủ đề được sưu tập, phân loại và sắp xếp
bởi người quản trị thông qua công cụ quản trị của họ trong khi Search Engine phải tự
động sưu tập thông tin và đánh chỉ mục. Sự khác nhau giữa chúng là rõ ràng và tài liệu
này chỉ tập trung nghiên cứu các lĩnh vực của Search engine.
Người ta hay nhắc đến khái niệm meta-Search engine. Thực chất meta-Search
Engine chỉ nhận các yêu cầu tìm kiếm của người dùng rồi gửi chúng tới các Search
Engine khác. Sau đó nó nhận về các kết quả tìm kiếm và tổ chức lại và hiển thị các kết
quả này cho người dùng. Meta-Search Engine cho nhiều kết quả hơn (tập hợp các kết
quả của các Search Engine khác) nhưng không cho phép người dùng làm mịn kết quả
bởi các luật riêng mà các Search Engine thông thường có được.
1.4. INFORMATION RETRIEVAL VÀ SEARCH ENGINE
Information Retrieval [21] (IR) là một lĩnh vực rộng lớn. Khái niệm
Information Retrieval tạm dịch sang tiếng Việt là “truy xuất thông tin”, bao gồm các
công việc “thu thập thông tin”, “lưu trữ thông tin” và “khai thác thông tin”. Thông
tin, như đã nói ở trên là vô cùng phong phú, đa dạng. Vấn đề chúng ta quan tâm ở đây
11
(trong phạm vi của Search engine) là thông tin lưu dưới dạng văn bản (text). Cho một
kho tài liệu lớn, làm thế nào lấy được tài liệu mà ta cần, đó chính là chức năng chính
của một hệ IR. Nó phải biểu diễn (represent), lưu trữ (store), tổ chức (organize) và
truy cập (access) các mục thông tin (item) mỗi khi cần. Thông tin khác với dữ liệu
(data) nên Information Retrieval khác với Data Retrieval (DR). Hệ DR chỉ thao tác
với dữ liệu (dạng thô của thông tin, ví dụ như các từ ngữ) còn hệ IR phải thao tác trên
thông tin (phức tạp hơn dữ liệu rất nhiều). Chẳng hạn như hệ DR chỉ phải tìm kiếm
chính xác các từ ngữ được yêu cầu (đưa ra danh sách các tài liệu có chứa các từ đó)
trong khi hệ IR phải đưa ra danh sách các tài liệu có nội dung nói về một chủ đề (thông
tin) nào đó. Như vậy cũng đủ thấy sự phức tạp hơn rất nhiều của IR so với DR.
Search Engine là một hệ IR với đầy đủ các chức năng từ thu thập thông tin trên
mạng, lưu trữ chúng, tổ chức chúng và tìm kiếm chúng theo yêu cầu của người dùng.

Vì thế mà việc xây dựng một Search Engine đòi hỏi nhiều kiến thức của lĩnh vự IR.
Sau đây là một số vấn đề lý thuyết của IR có liên quan tới việc xây dựng Search
engine.
1.4.1. Định nghĩa và khái niệm
Sau đây là một số thuật ngữ, khái niệm được sử dụng thường xuyên trong các
hệ IR cũng như là trong Search engine:
Repository (kho dữ liệu): Là tập hợp các tài liệu (document) đã được lưu trữ.
Database (cơ sở dữ liệu): Dữ liệu được lưu vào file có cấu trúc chặt chẽ gọi là
database.
Document (tài liệu): Là chuỗi các thuật ngữ (term) trình bày một nội dung, chủ
đề nào đó bằng ngôn ngữ tự nhiên.
Term (từ ngữ, thuật ngữ): là một đơn vị có ngữ nghĩa, có thể là một từ, một cụm
từ, … Trong tiếng Việt, term có thể coi là một từ đơn hay từ ghép.
Query (truy vấn): Là một yêu cầu tìm kiếm tài liệu liên quan đến một chủ đề
nào đấy.
Result: Kết quả tìm kiếm (trả lời) truy vấn.
Revelancy: Mức độ tương tự của tài liệu và truy vấn.
Textual similarity: Một khái niệm tương tự về mức độ liên quan.
Similarity Coefficient: Hệ số tương tự giữa truy vấn và tài liệu.
1.4.2. Kiến trúc của một hệ IR
Với vai trò thu thập, lưu trữ và trả lời các câu hỏi liên quan đến thông tin mà nó
lưu trữ, các hệ IR có mô hình đơn giản được cho như hình vẽ sau:
12
Hình 3. Mô hình đơn giản của một hệ IR
Với đầu vào là các tài liệu và truy vấn của người dùng, khối xử lý (processor) sẽ
cho kết quả về các tài liệu thoả mãn truy vấn. Các kết quả này đôi khi được sử dụng
làm thông tin phản hồi cho hệ IR nhằm có được các kết quả tốt hơn trong các tình
huống tương tự sau này.
Mổ xẻ các thành phần của những hệ thống phức tạp như Search engine, mô
hình IR của nó là khá phức tạp. Vấn đề chúng ta quan tâm ở đây là việc tổ chức, sắp

xếp tài liệu cũng như tìm kiếm như thế nào trên tổ chức đó để có được kết quả tốt nhất.
Một trong những kỹ thuật được sử dụng trong việc tổ chức tài liệu đó là đánh chỉ mục
tài liệu.
Đánh chỉ mục là ghi lại nơi xuất hiện của các term (tài liệu nào?). Mỗi khi cần
tìm tài liệu liên quan đến term nào, ta sẽ tra cứu trong chỉ mục để biết được tất cả các
tài liệu có chứa term đó. Cấu trúc chỉ mục được sử dụng trong hầu hết các hệ IR là chỉ
mục ngược (inverted index).
Sau đây là mô hình đánh chỉ mục (bao gồm 2 thành phần là mô-đun đánh chỉ
mục và mô-đun truy vấn):
Hình 4. Mô hình đánh chỉ mục của hệ IR[14]
13
Document: Là đối tượng lưu trữ tất cả những gì liên quan của tài liệu, bộ phận
phân tích parser phân tích document và trả ra đối tượng tài liệu (document object) bao
gồm danh sách các term và sự xuất hiện của nó trong tài liệu.
Inverted index: Là chỉ mục ngược cho biết một term xuất hiện trong tài liệu nào
tại vị trí nào (sẽ nghiên cứu sau)
StopWordList: Là danh sách các từ bị bỏ qua khi phân tích truy vấn (chẳng hạn
như “the”, “a” trong tiếng Anh).
Index builder: Là bộ phận chính, điều khiển quá trình đánh chỉ mục
Parser: Phân tích file và trả về các đối tượng tài liệu (document objects)
Tokenizer: Kiểm soát các dấu hiệu, ký hiệu đặc biệt (ví dụ: 12-20-1998) và kiểu
loại của chúng (ví dụ: ngày tháng, tiền tệ, …).
Tiếp đó là mô hình truy vấn:
Hình 5. Mô hình truy vấn của hệ IR[14]
Query: Truy vấn (chủ đề được thể hiện bởi các term trong yêu cầu)
Query processor: Với đầu vào là query và chỉ mục ngược, bộ phận này thực
hiện chức năng tìm kiếm ra các tài liệu liên quan.
Result: Kết quả của quá trình truy vấn
1.4.3. Các độ đo (metrics)
Để đánh giá kết quả của quá trình tìm kiếm, người ta đưa ra hai độ đo cơ bản là:

độ chính xác (precision) và độ bao (recall). Độ chính xác là phần trăm tài liệu có liên
quan đến chủ đề trong tổng số tài liệu tìm được, còn độ bao là phần trăm tài liệu có
liên quan đến chủ đề tìm được trong tổng số tài liệu liên quan đến chủ đề. Độ đo được
minh họa bởi hình vẽ sau đây:
14
Hình 6. Minh họa precision/recall
Ví dụ, có tất cả z =10 tài liệu liên quan đến chủ đề trong tổng số 100 tài liệu.
Thao tác tìm kiếm tìm ra y = 20 tài liệu trong đó có x = 5 tài liệu thực sự liên quan
(nằm trong số 10 tài liệu liên quan đến chủ đề). Khi đó precision = 5/20 = 25% và
recall = 5/10 = 50%.
Để đánh giá mức độ liên quan của kết quả, người ta đưa ra khái niệm hệ số
tương tự SC (Similary Coefficient) dựa trên sự cân bằng giữa độ chính xác và độ bao.
1.4.4. Chỉ mục ngược (inverted index) trong tìm kiếm
1.4.4.1. Cấu trúc của chỉ mục ngược
Như đã trình bày ở trên, cần phải có một cấu trúc thích hợp để lưu trữ hiệu quả:
Danh sách các tài liệu có sự xuất hiện của một term nào đó.
Tần suất xuất hiện của term đó trong tài liệu (tf – term frequency)
Vị trí mà term xuất hiện trong tài liệu (vị trí có thể là phần nào đó, đoạn nào đó,
câu nào đó, vị trí trong câu nào đó, …. trong tài liệu).
Giả sử t
i
là các term, D
i
là các tài liệu (định danh của tài liệu – docID) và vị trí
trong tài liệu được đánh dấu bằng các con số. Hình vẽ sau đây minh hoạ cho cấu trúc
của chỉ mục ngược với thí dụ có 2 term và 3 tài liệu (t1 xuất hiện trong D
1
tại vị trí số
5 và tài liệu D
2

tại vị trí số 1; t
2
xuất hiện trong tài liệu D
1
tại vị trí thứ 5):
15
Hình 7. Ví dụ cấu trúc của chỉ mục ngược
Danh sách các term được gọi là từ điển (dictionary) còn mỗi cặp (D
i
, vị trí)
được gọi là post. Mỗi danh sách post ứng với một term cho biết danh sách các tài liệu
và vị trí xuất hiện của term trong các tài liệu đó.
1.4.4.2. Giải thuật xây dựng chỉ mục ngược
Giải thuật xây dựng chỉ mục ngược [13] được mô tả như sau:
Với mỗi tài liệu trong bộ sưu tập
Với mỗi Term t trong tài liệu d
Tìm t trong từ điển Term
Nếu t tồn tại thêm nốt vào danh sách
Ngược lại, thêm t vào từ điển và thêm nút mới được trỏ bởi t
Sau khi mọi tài liệu được xử lý thì ghi ngược lên đĩa cứng
Hình 8. Giải thuật xây dựng chỉ mục ngược (1).
Giải thuật trên được sử dụng với giả thiết có đủ bộ nhớ cho các term. Trong
trường hợp không biết trước có đủ bộ nhớ không, phải định kỳ ghi chỉ mục ngược lên
ổ cứng. Giải thuật đầy đủ [13] sau đây giải quyết vấn đề này:
Với mỗi tài liệu trong bộ sưu tập
Begin
numSubSet =1;
Khi mà Bộ nhớ còn trống
Với mỗi Term t trong tài liệu d
Tìm t trong từ điển Term

Nếu t tồn tại thêm nốt vào danh sách
Ngược lại, thêm t vào từ điển và thêm nút mới được
trỏ bởi t
Ghi SubSet của InvertIndex lên đĩa cứng
16
numSubSet = numSubSet + 1
Giải phóng bộ nhớ
End
For I = 1 to numSubSet
Nhập chung các SubSet vơi InvertIndex
Hình 9. Giải thuật xây dựng chỉ mục ngược đầy đủ (2).
1.4.5. Các mô hình IR trong tìm kiếm và đánh giá kết quả
1.4.5.1. Mô hình Boolean
Đại số logic được đưa ra bởi nhà toán học người Anh Gorge Boole. Mô hình
Boolean trong tìm kiếm và đánh giá kết quả được đưa ra dựa trên các cơ sở về đại số
logic trong đó sử dụng các toán tử logic trong các câu truy vấn. Các toán tử cơ bản
được sử dụng là AND, OR, NOT.
Theo cách tiếp cận trên thì tài liệu D được coi như là tập các terms (có mặt hay
không có mặt) còn truy vấn Q là một biểu thức logic của các terms. R(D, Q) đánh giá
tài liệu D có thoả mãn truy vấn Q hay không, nhận giá trị Boolean (R=true nghĩa là
thoả mãn và R=false là không thoả mãn). Tuỳ từng phép toán logic mà một tài liệu
được đánh giá là có thoả mãn truy vấn hay không, cụ thể như sau:
AND: Khi sử dụng AND, yêu cầu tìm kiếm phải có mặt tất cả các term trong
câu truy vấn. Ví dụ “A AND B” là truy vấn đòi hỏi các tài liệu liên quan phải có sự
xuất hiện của cả 2 term A và B.
OR: Khác với AND, OR chỉ cần sự xuất hiện của một trong số các term có
trong truy vấn.
NOT: NOT A có nghĩa là trong tài liệu không được có A mới thỏa mãn.
XOR: các term xuất hiện trong tài liệu với tích chất loại trừ nhau (có mặt term
này thì không có term kia).

Một truy vấn có thể dùng nhiều toán tử và ký hiệu “(” và “)” được sử dụng để
xác định thứ tự ưu tiên ngoài sự ưu tiên thông thường của các phép toán logic. Hình
sau đây mô tả giải thuật áp dụng cho các truy vấn sử dụng toán từ AND. Đối với các
giải thuật khác, cách tiếp cận là tương tự.
1. Với mỗi term t trong query
Lấy về từ t
Lưu lại ft và địa chỉ của lt (Inverted List)

×