ĐẠ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
Trang 1ĐẠ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
Trang 3ĐẠ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
Hà Nội – 2009
Trang 4LỜ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
Trang 5LỜ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ề trungnh@socbay.com
Tác giả
Nguyễn Hoàng Trung
Trang 6MỤC LỤC
MỞ ĐẦU GIỚI THIỆU LUẬN VĂN 8
1.MỤCĐÍCH 8
2.LÝDOLỰACHỌNĐỀTÀI 8
3.BỐCỤCLUẬNVĂN E RROR ! B OOKMARK NOT DEFINED CHƯƠNG 1 LÝ THUYẾT CHUNG VỀ SEARCH ENGINE ERROR! BOOKMARK NOT DEFINED.
1.1 TỔNGQUANVỀMẠNGINTERNETVÀSEARCHENGINE E RROR ! B OOKMARK NOT DEFINED
1.2 CÁCMÔHÌNHKIẾNTRÚCCỦASEARCHENGINE E RROR ! B OOKMARK NOT DEFINED
1.2.1 Mô hình kiến trúc chung Error! Bookmark not defined.
1.2.2 Mô hình agent Error! Bookmark not defined.
1.3 PHÂNLOẠISEARCHENGINE E RROR ! B OOKMARK NOT DEFINED
1.4 INFORMATIONRETRIEVALVÀSEARCHENGINE E RROR ! B OOKMARK NOT DEFINED
1.4.1 Định nghĩa và khái niệm Error! Bookmark not defined.
1.4.2 Kiến trúc của một hệ IR Error! Bookmark not defined.
1.4.3 Các độ đo (metrics) Error! Bookmark not defined.
1.4.4 Chỉ mục ngược (inverted index) trong tìm kiếm Error! Bookmark not defined.
1.4.5 Các mô hình IR trong tìm kiếm và đánh giá kết quả Error! Bookmark not defined.
1.4.6 Từ dừng Error! Bookmark not defined.
1.4.7 Stemming Error! Bookmark not defined.
1.5 WEBCRAWLER E RROR ! B OOKMARK NOT DEFINED
1.5.1 Giới thiệu Error! Bookmark not defined.
1.5.2 Các chiến lược lựa chọn trang Web trong quá trình crawl Error! Bookmark not defined.
1.5.3 Tăng tốc độ crawl và crawl song song Error! Bookmark not defined.
1.5.4 Làm tươi trang Web (pages refresh) Error! Bookmark not defined.
1.6 LƯUTRỮDỮLIỆU E RROR ! B OOKMARK NOT DEFINED
1.6.1 Giới thiệu Error! Bookmark not defined.
1.6.2 Khó khăn và thách thức Error! Bookmark not defined.
1.6.3 Lưu trữ phân tán (distributed repository) Error! Bookmark not defined.
1.7 XÂYDỰNGCHỈMỤCTỪ E RROR ! B OOKMARK NOT DEFINED
1.7.1 Giới thiệu Error! Bookmark not defined.
1.7.2 Chỉ mục ngược trong Search engine Error! Bookmark not defined.
1.7.3 Khó khăn, thách thức Error! Bookmark not defined.
1.7.4 Index partitioning Error! Bookmark not defined.
1.8 TÌMKIẾM E RROR ! B OOKMARK NOT DEFINED
1.9 XẾPHẠNGKẾTQUẢTÌMKIẾM E RROR ! B OOKMARK NOT DEFINED
1.9.1 PageRank Error! Bookmark not defined.
1.9.2 HITS Error! Bookmark not defined.
1.9.3 Một số kỹ thuật dựa liên kết khác Error! Bookmark not defined.
CHƯƠNG 2 KHẢO SÁT MỘT SỐ SEARCH ENGINE ERROR! BOOKMARK NOT DEFINED.
2.1 SEARCHENGINEMÃMỞLUCENE E RROR ! B OOKMARK NOT DEFINED
2.1.1 Giới thiệu Lucene Error! Bookmark not defined.
2.1.2 Các phiên bản ngôn ngữ khác của Lucene Error! Bookmark not defined.
2.1.3 Vòng đời kiến trúc phần mềm Lucene Error! Bookmark not defined.
2.1.4 Sơ đồ phụ thuộc của Lucene.Net Error! Bookmark not defined.
2.1.5 Các lớp của Lucene.Net Error! Bookmark not defined.
2.2 TIẾNGVIỆTTRONGXÂYDỰNGCÔNGCỤTÌMKIẾM E RROR ! B OOKMARK NOT DEFINED
2.2.1 Đặc điểm của ngữ âm và âm vị Error! Bookmark not defined.
2.2.2 Đặc trưng về từ pháp và hình thái Error! Bookmark not defined.
2.2.3 Đặc trưng về ngữ pháp Error! Bookmark not defined.
2.2.4 Sự phức tạp trong mã hoá tiếng Việt Error! Bookmark not defined.
2.2.5 Unicode và chuẩn hoá cách mã hoá tiếng Việt Error! Bookmark not defined.
2.3 KHẢOSÁTCÁCCÔNGCỤTÌMKIẾMTIẾNGVIỆTHIỆNNAY E RROR ! B OOKMARK NOT DEFINED
2.3.1 Search Engine Google Error! Bookmark not defined.
2.3.2 Search Engine Xalo (www.Xalo.vn) Error! Bookmark not defined.
2.3.3 Search Engine Baamboo (www.Baamboo.com.vn) Error! Bookmark not defined.
Trang 72.3.4 Search Engine Socbay(www.Socbay.com) Error! Bookmark not defined.
2.4 ĐÁNHGIÁVỀCÁCCÔNGCỤTÌMKIẾMTIẾNGVIỆT E RROR ! B OOKMARK NOT DEFINED CHƯƠNG 3 XÂY DỰNG CÔNG CỤ MP3 SEARCH ERROR! BOOKMARK NOT DEFINED.
3.1 CRAWLERCHOTÌMKIẾMMP3 E RROR ! B OOKMARK NOT DEFINED
3.1.1 Các vấn đề đặt ra với crawler Error! Bookmark not defined.
3.1.2 Các chiến lược lựa chọn trang Mp3 trong quá trình crawl Error! Bookmark not defined.
3.1.3 Tăng tốc độ crawl và crawl song song Error! Bookmark not defined.
3.1.4 Làm tươi trang Mp3 (pages refresh) Error! Bookmark not defined.
3.1.5 Kho lưu trữ cho tìm kiếm MP3 Error! Bookmark not defined.
3.1.6 Đánh chỉ mục cho tìm kiếm MP3 Error! Bookmark not defined.
3.1.7 Chỉ mục trong từ điển âm nhạc Error! Bookmark not defined.
3.1.8 Chỉ mục ngược trong từ điển âm nhạc Error! Bookmark not defined.
3.1.9 Khó khăn, thách thức của việc đánh chỉ mục Error! Bookmark not defined.
3.2 TÌMKIẾMMP3 E RROR ! B OOKMARK NOT DEFINED
3.2.1 Phân tích truy vấn Error! Bookmark not defined.
3.2.2 Tìm kiếm Error! Bookmark not defined.
3.2.3 Xếp hạng cho MP3 Error! Bookmark not defined.
3.2.4 Giao diện của MP3 Error! Bookmark not defined.
3.2.5 Đánh giá phần mềm tìm kiếm MP3 Error! Bookmark not defined.
PHẦN KẾT LUẬN ERROR! BOOKMARK NOT DEFINED.
1 NHỮNGĐÓNGGÓPCỦALUẬNVĂN E RROR ! B OOKMARK NOT DEFINED
2 HƯỚNGPHÁTTRIỂNCỦAĐỀTÀI E RROR ! B OOKMARK NOT DEFINED TÀI LIỆU THAM KHẢO 9
Tiếng Việt 9 Tiếng Anh 9
PHỤ LỤC ERROR! BOOKMARK NOT DEFINED.
PHỤLỤCA.KIẾNTRÚCGOOGLE E RROR ! B OOKMARK NOT DEFINED
PHỤLỤCB.CÁCKHÁINIỆMVỀSEARCHENGINE E RROR ! B OOKMARK NOT DEFINED
PHỤLỤCC.THUẬTTOÁNVUNĐỐNGHEAPSORTCHOTÌMKIẾM E RROR ! B OOKMARK NOT DEFINED
PHỤLỤCD.BẢNGMÃHOÁCHỮCÁITIẾNGVIỆT E RROR ! B OOKMARK NOT DEFINED CHỈ MỤC TỪ ERROR! BOOKMARK NOT DEFINED.
Trang 8DANH MỤC HÌNH VẼ
Hình 1 Mô hình kiến trúc chung của Search engine[14] Error! Bookmark not
defined.
Hình 2 Kiến trúc agent của Search engine Error! Bookmark not defined Hình 3 Mô hình đơn giản của một hệ IR Error! Bookmark not defined Hình 4 Mô hình đánh chỉ mục của hệ IR[14] Error! Bookmark not defined Hình 5 Mô hình truy vấn của hệ IR[14] Error! Bookmark not defined Hình 6 Minh họa precision/recall Error! Bookmark not defined Hình 7 Ví dụ cấu trúc của chỉ mục ngược Error! Bookmark not defined Hình 8 Giải thuật xây dựng chỉ mục ngược (1) Error! Bookmark not defined Hình 9 Giải thuật xây dựng chỉ mục ngược đầy đủ (2) Error! Bookmark not
defined.
Hình 10 Ví dụ đơn giản về VSM Error! Bookmark not defined Hình 11 Chuẩn hóa độ dài của tài liệu Error! Bookmark not defined Hình 12 Mô phỏng tìm kiếm theo chiều rộng Error! Bookmark not defined Hình 13 Mô phỏng tìm kiếm theo chiều sâu Error! Bookmark not defined Hình 14 Kiến trúc chung của crawler song song Error! Bookmark not defined Hình 15 Tập gồm hai trang Web với tốc độ thay đổi khác nhau Error!
Bookmark not defined.
Hình 16 WebBase repository architecture Error! Bookmark not defined Hình 17 PageRank đơn giản và PageRank có sửa đổi (d=0.8) Error! Bookmark
not defined.
Hình 18 Ví dụ giải thuật HITS Error! Bookmark not defined Hình 19 Vòng đời của Lucene Error! Bookmark not defined Hình 20 Sơ đồ phụ thuộc của Lucene với môi trường Error! Bookmark not
defined.
Hình 21 Biểu đồ phần trăm mã code cho module Lucene Error! Bookmark not
defined.
Hình 22 Sơ đồ phụ thuộc module của Lucene Error! Bookmark not defined Hình 23: Mô hình tách từ khóa từ văn bản thô Error! Bookmark not defined Hình 24 Kiến trúc Google Error! Bookmark not defined.
Trang 9DANH MỤC BẢNG BIỂU
Bảng 1 Giải thuật xử lý truy vấn dạng AND Error! Bookmark not defined.
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
Error! Bookmark not defined Bảng 3 Tách term từ tài liệu Error! Bookmark not defined Bảng 4 Sắp xếp lại các term Error! Bookmark not defined Bảng 5 Thành lập từ điển và file postings Error! Bookmark not defined Bảng 6 Ví dụ về tìm kiếm AND trong mô hình Boolean Error! Bookmark not
defined.
Bảng 7 Danh sách phụ thuộc Module của Lucene Error! Bookmark not
defined.
Bảng 8 Kết quả test từ trên các công cụ Error! Bookmark not defined Bảng 9 Cấu trúc các trường của MP3 Error! Bookmark not defined Bảng 10 Tách term từ tài liệu Error! Bookmark not defined Bảng 11 Danh sách các term theo id văn bản Error! Bookmark not defined Bảng 12 Danh sách từ theo văn bản và tần số xuất hiện Error! Bookmark not
defined.
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ệnError!
Bookmark not defined.
Bảng 14 Thuật toán Merge 2 danh sách đơn giản Error! Bookmark not
defined.
Bảng 15 Danh sách các trường được Rank Error! Bookmark not defined Bảng 16 Mã hoá chữ cái tiếng Việt bằng các bộ mã khác nhau Error!
Bookmark not defined.
Trang 10DANH 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
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
TCVN3 Tiêu chuẩn Việt Nam 3
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
Trang 11MỞ ĐẦ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ã
Trang 12TÀI LIỆU THAM KHẢO
Tiếng Việt
1 Nguyễn Tài Cẩn (1998), Ngữ pháp tiếng Việt (Tiếng - Từ ghép - Đoản Ngữ),
NXB Đại học Quốc gia Hà Nội
2.Nguyễn Thiện Giáp, Phân loại các ngôn ngữ theo quan hệ loại hình,
http://ngonngu.net/index.php?p=234
3.NgonNgu.Net, Cụm từ cố định, http://ngonngu.net/index.php?p=187
4 Tcxdvn.xaydung.gov.vn, Tiêu chuẩn xây dựng Việt nam
http://tcxdvn.xaydung.gov.vn/TCXDVN/TCXDVN.NSF/da73105996deacc04725 70d5005b7a6a/5873b41ce9e8fb63472570c4004da72e?OpenDocument
5 Wikipedia.Org, Loại hình ngôn ngữ,
http://vi.wikipedia.org/wiki/Lo%E1%BA%A1i_h%C3%ACnh_ng%C3%B4n_ng
%E1%BB%AF
6 Wikipedia.Org, Lucene, http://vi.wikipedia.org/wiki/ Lucene
7 Wikipedia.Org, Unicode, http://vi.wikipedia.org/wiki/Unicode
Tiếng Anh
8 Anthony Scime, Web mining: applications and techniques
http://books.google.com.vn/books?id=TDhPMs3adw0C&pg=PA53&lpg=PA53&d
q=%22Forward+link+count%22&source=bl&ots=r0_utue0fg&sig=PNBIsNl-K-
qlGM2wLfDaGAc4ytI&hl=vi&ei=jiUxS_apKZy-swOwypS7BA&sa=X&oi=book_result&ct=result&resnum=1&ved=0CAgQ6AEwAA#v
=onepage&q=%22Forward%20link%20count%22&f=false
9 Junghoo Cho, Garcia-Molina, H and Page, L (1998), Efficient Crawling
Through URL Ordering, http://ilpubs.stanford.edu:8090/347/
10 Junghoo Cho, Hector Garcia-Molina (2002), Parallel Crawlers,
http://rose.cs.ucla.edu/~cho/papers/cho-parallel.pdf
http://www.focuseek.com/manuals/User/beginners.html
12 Marc Najork, Janet L Wiener(2001), Breadth-first Search crawling yields
high-quality pages, http://www10.org/cdrom/papers/208/
Trang 1313 Grossman, Frieder, Goharian(2002),
http://docs.google.com/viewer?a=v&q=cache:ww20te0h39sJ:www.eng.auburn.ed
u/~gilbert/Comp7120/Concept-50/IR-Building-Inverted-Index.pdf+building+an+invert+index&hl=vi&gl=vn&pid=bl&srcid=ADGEESi_uMDxtr hmQJCylHryuRCoTFL3fFP7Ngf2dvBVEhpr3bVS53Z6dNUg628zf
14 Prasad Pingali, Jagadeesh Jagarlamudi, Vasudeva Varma, WebKhoj: Indian language IR from Multiple Character Encodings,
http://www2006.org/programme/files/xhtml/5503/fp5503-pingali/fp5503-pingali-xhtml.html
14 Red-gate.com, NET Reflector,
http://www.red-gate.com/products/reflector/index.htm
15 Sahilthaker (2008), Information Retrieval & Search - Basic IR Models ,
http://blogs.msdn.com/spt/archive/2008/03/05/information-retrieval-Search-basic-ir-models.aspx
16 Wikipedia.Org, BackLink, http://en.wikipedia.org/wiki/BackLink
17 Wikipedia.Org, Distributed web crawling,
http://en.wikipedia.org/wiki/ Distributed web crawling
18 Wikipedia.Org, HITS algorithm, http://en.wikipedia.org/wiki/HITS algorithm
19 Wikipedia.Org, Hubs and Authorities,
http://en.wikipedia.org/wiki/Hubs and Authorities
20 Wikipedia.Org, Information retrieval,
http://en.wikipedia.org/wiki/Information retrieval
22 Wikipedia.Org, Lucene, http://en.wikipedia.org/wiki/ Lucene
23 Wikipedia.Org, PageRank, http://en.wikipedia.org/wiki/PageRank
24 Wikipedia.Org, Stemming, http://en.wikipedia.org/wiki/Stemming
25 Wikipedia.Org, Search engine indexing,
http://en.wikipedia.org/wiki/ Search engine indexing
26 Wikipedia.Org, Tf–idf, http://en.wikipedia.org/wiki/Tf–idf