Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch, Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch Tìm hiểu kiến trúc của search engine framework lucene và ứng dụng nutch
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
BÀI TẬP LỚN MÔN: XỬ LÝ NGÔN NGỮ TỰ NHIÊN
ĐỀ TÀI: TÌM HIỂU KIẾN TRÚC CỦA SEARCH ENGINE FRAMEWORK LUCENE & ỨNG DỤNG NUTCH
GVHD: Th.s Hoàng Anh Việt Nhóm sinh viên:
Nguyễn Vương Quyền 20082142
Lớp: Công nghệ phần mềm K53
Trang 2Hà Nội - 11/2012
Trang 3MỤC LỤC
PHẦN I: NGUYÊN LÝ VÀ MÔ HÌNH CHUNG CỦA SEARCH ENGINE 3
1 Giới thiệu chung 3
2 Phân loại 4
2.1 Máy tìm kiếm thông thường 4
2.2 Máy siêu tìm kiếm - Meta Search Engine 4
3 Nguyên lý hoạt động của search engine 5
4 Mô hình của seach engine 6
4.1 Bộ tìm duyệt Crawler 6
4.2 Kho dữ liệu Repository 8
4.3 Bộ lập chỉ mục Indexer 10
4.4 Bộ tìm kiếm thông tin – Search Engine 11
4.5 Phân hạng trang (Page Rank) 13
PHẦN II: FRAMEWORK LUCENE 15
1 Giới thiệu 15
2 Lucene trong các thành phần của một ứng dụng tìm kiếm 15
2.1 Các thành phần indexing 16
2.2 Các thành phần tìm kiếm (Components for searching) 19
3 Các lớp chính của Lucene 20
3.1 Các lớp chính đánh chỉ mục 20
3.2 Các lớp chính tìm kiếm 22
PHẦN III: ỨNG DỤNG NUTCH 25
1 Giới thiệu về Nutch 25
1.1 Định nghĩa 25
1.2 Đặc điểm 25
1.3 Nutch và Lucene 26
2 Các nền tảng phát triển của Nutch 26
Trang 43 Kiến trúc của Nutch 27TÀI LIỆU THAM KHẢO 31
PHẦN I: NGUYÊN LÝ VÀ MÔ HÌNH CHUNG CỦA SEARCH
ENGINE
1 Giới thiệu chung
Máy tìm kiếm Search Engine nguyên thuỷ là một phần mềm nhằm tìm ra các trangtrên mạng Internet có nội dung theo yêu cầu người dùng dựa vào các thông tin mà người
sử dụng cung cấp qua từ khoá tìm kiếm Máy tìm kiếm sẽ truy tìm trong cơ sở dữ liệu của
nó và trả về danh mục các trang web có chứa từ khoá mà người sử dụng đưa vào ban đầu
Thuật ngữ “Search Engine” được dùng chung để chỉ 2 hệ thống tìm kiếm: Một docác chương trình máy tính tự động tạo ra (Crawler-Based Search Engines) và dạng thưmục Internet do con người quản lý (Human-Powered Directories) Hai hệ thống tìm kiếmnày tìm và lập danh mục website theo 2 cách khác nhau
Crawler-Based Search Engines: Các máy tìm kiếm loại này chúng sử dụng cácchương trình máy tính, được gọi là Robots, Spiders, hay Crawlers để lần tìm các trangtrên mạng, rồi tự động phân tích các trang lấy về và đưa vào cơ sở dữ liệu của nó Khi cómột yêu cầu tìm kiếm, các Search Engine đối chiếu từ khóa cần tìm vào trong bảng chỉ
Trang 5mục và trả về các thông tin lưu trữ tương ứng Các cỗ máy tìm kiếm loại này có cơ chếcập nhật nội dung của web định kỳ để phát hiện sự thay đối (nếu có) của các trang web.
Human-Powered Directories: các thư mục Internet hoàn toàn phụ thuộc vào sự
quản lý của con người Nếu người sử dụng muốn các Search Engine tìm thấy trang webcủa mình thì họ phải đăng ký vào thư mục bằng cách gửi bản đăng ký đến ban biên tậpcủa Search Engine
Ngày nay hầu hết các hệ thống tìm kiếm đều là sự tổng hợpcủa hệ thống tìm kiếm
tự động và hệ thống tìm theo thư mục do người dùng quản lý
2 Phân loại
Xét theo phương pháp tìm kiếm thì các Search Engine được chia làm hai loại chính: Tìmkiếm thông thường và siêu tìm kiếm
2.1 Máy tìm kiếm thông thường
Các máy tìm kiếm thông thường thực hiện công việc tìm kiếm theoqui trình thuthập tài liệu, phân loại và tạo chỉ mục Chúng gồm hai loại,Search Engine sử dụng thưmục chủ đề và Search Engine tạo chỉ mục tự động
Các Search Engine sử dụng thư mục chủ đề phân lớp sẵn các trangtrên Internetvào các thư mục chủ đề và theo các cấp chi tiết hơn của chủ đề
2.2 Máy siêu tìm kiếm - Meta Search Engine
Meta Search Engine là loại máy truy tìm ảo, nó hoạt động dựa trên sự tồn tại củacác Search Engine sẵn có Các Meta Search Engine không có cơ sở dữ liệu của riêngmình Khi có yêu cầu tìm kiếm máy siêu tìm kiếm sẽ gửi từ khóa đến các Search Enginekhác một cách đồng loạt và nhận về các kết quả tìm được Nhiệm vụ còn lại của máy siêutìm kiếm là phân tích và phân hạng lại các kết quả tìm được
Trang 63 Nguyên lý hoạt động của search engine
Search engine điều khiển robot đi thu thập thông tin trên mạng thông qua các siêuliên kết ( hyperlink ) Khi robot phát hiện ra một site mới, nó gởi tài liệu (web page) vềcho server chính để tạo cơ sở dữ liệu chỉ mục phục vụ cho nhu cầu tìm kiếm thông tin
Bởi vì thông tin trên mạng luôn thay đổi nên robots phải liên tục cập nhật các site
cũ Mật độ cập nhật phụ thuộc vào từng hệ thống search engine Khi search engine nhậncâu truy vấn từ user, nó sẽ tiến hành phân tích, tìm trong cơ sở dữ liệu chỉ mục & trả vềnhững tài liệu thoả yêu cầu
Trang 74 Mô hình của seach engine
Lựa chọn các trang để tải về
Cách cập nhật các trang: Crawler phải xem xét trang nào nên ghé thăm lạitrang nào không
Song song hoá quá trình dò tìm trang web: Các Crawlers song songphải được
bố trí một cách hợp lý sao cho một Crawler không ghé thăm cáctrang mà mộtCrawler khác đã thăm
4.1.1 Page selection (lựa chọn các trang)
Bộ tìm duyệt Crawler tải về các trang theo thứ tự trang nào “quantrọng” sẽ tải vềtrước Như vậy ta phải tìm hiểu cách mà Crawler xác địnhmức độ quan trọng của cáctrang
Cho một trang web P, ta định nghĩa mức độ “quan trọng” của trang P theo cáccách sau:
- Interest Driven: là phương pháp xác định mức độ quan trọng của các trang dựa
vào mức độ quan tâm của người sử dụng với các trang đó
- Popularity Driven: xác định mức độ quan trọng của một trang dựa vào mức độ
phổ biến của trang Một trong các cách để định nghĩa độ phổ biến của trang là
sử đếm số liên kết đến trang đó (số back link).
- Location Driven: xác định mức độ quan trong của trang P dựa vào địa chỉ của
nó
Trang 84.1.2 Mô hình Crawler
Crawler được thiết kế để có khả năng ghé thăm các trang theo thứ tựcác trang cómức độ quan trọng cao hơn thăm trước các trang có hạng thấphơn thăm sau Bộ Crawlerđánh giá các trang dựa vào giá trị phân hạng.Từsự đánh giá này Crawler biết được cáctrang có mức độ quan trọng cao hơnđể lấy về trong lần kế tiếp Để đánh giá chất lượng
của Crawler người ta cóthể định nghĩa độ đo chất lượng quality metric của nó bằng một
trong haicách sau:
- Crawl & stop: Bộ Crawler C xuất phát từ trang khởi đầu P0 và dừng lại sau khighé thăm k trang, k là số lượng trang mà Crawler có thể tải về trong một lầnduyệt Một Crawler tốt sẽ ghé thăm các trang theo thứ tự R1,….Rk trongđó R1
là trang có thứ hạng cao nhất, lần lượt đến R2,… Gọi R1, …,RK là cáctranghot Trong số k trang được Crawler ghé thăm chỉ có m trang (m<=k) sẽđượcsắp thứ hạng cao hơn hoặc bằng trang Rk
- Crawl & Stop with Threshold: vẫn giả sử rằng bộ Crawler ghé thăm ktrang.Tuy nhiên lúc này đích quan trọng G đã được cho sẵn, và bất cứ trang nào có
độ quan trọng lớn hơn G thì đều được coi là trang hot
- Độ đo thứ hạng (Ordering Metrics): Một Crawler lưu giữ những URLs mà nó
đã ghé thăm trong quá trình dò tìm vào một hàng đợi Sau đó nó lựa chọnmộtURL trong hàng đợi cho lần ghé thăm tiếp theo Ở mỗi lần lựa chọn thì
Crawler chọn URL u có giá trị Orderingcao nhất để ghé thăm Độ đo thứ hạng (Ordering Metric) được thiết lập dựa vào một trong các độ đo khác Ví dụ nếu
ta đang thực hiện tìm những trang có giá trị IB(P) cao, thì ta sẽ lấygiá trị IB’(P)
làm độ đo thứ hạng, trong đó P là trang mà được trang u trỏ tới.
4.1.3 Page Refresh
Khi Crawler lựa chọn và tải về các trang “quan trọng”, sau một khoảng thời giannhất định nó phải thực hiện cập nhật các trang đó Có rất nhiều cách để cập nhật các trangweb, và các cách khác nhau sẽ cho các kếtquả khác nhau Sau đây là hai cách:
- Uniform refresh policy: Chiến lược cập nhật đồng loạt Crawler ghé thăm lạitất cả các trang theo cùng một tần suất f
- Proportional refresh policy: Cập nhật theo tỷ lệ, một trang thường xuyên thayđổi thì Crawler ghé thăm thường xuyên hơn Để chính xác hơn ta giả sử μi làtần suất thay đổi của trang ei, và fi là tần suất mà Crawler ghé thăm lại trang ei.Crawler phải ước lượng μi của mỗi trang để thiết lập chiến lược ghé thăm lại mỗitrang thích hợp.Việc ước lượng này dựa vào quá trình thay đổi của trang trước đó màCrawler đã ghi lại được
Độ đo cập nhật (freshness metric):
Giả sử có hai tập các trang web A, B mỗi tập gồm 20 trang, trong đó tập A cótrung bình 10 trang được cập nhật, tập B có 15 trang được cập nhật Người ta nói rằng tập
B “cập nhật” hơn (“fresher”) tập A Thêm nữa nếu tập A được cập nhật một ngày trướcđây, tập B được cập nhật một năm trước đây thì ta nói tập A hiện hành hơn (“morecurrent”) tập B, dẫn đến khái niệm tuổi “age”:
Trang 9Dựa trên khái niệm trực giác này chúng ta đưa ra định nghĩa freshness và age như sau:
- Freshness: Đặt S={e1,…,en} là tập hợp N trang đã được Crawler tải về.reshness được định nghĩa như sau: Freshness của trang ei tại thời điểm t là
- Age: Để biết được “tuổi” của một tập chúng ta định nghĩa khái niệm “age” nhưsau: “age” của trang ei tại thời điểm t là
A(ei, t)
Freshness và age của tập các trang cục bộ có thể thay đổi theo thời gian Do vậychúng ta cần tính độ freshness trung bình trong một khoảng thời gian dài và sử dụng giátrị này làm độ freshness của cả tập hợp
Chiến lược cập nhật Trong một khoảng thời gian nhất định các Crawler chỉ có thể
tải về hoặc cập nhật số lượng giới hạn các trang Tuỳ thuộc vào chiến lược cập nhật trang,nguồn download trang sẽ được phân phối cho các trang khác nhau theo các cách khácnhau
4.2 Kho dữ liệu Repository
Bộ phận page Repository là một hệ thống lưu trữ có khả năng mở rộng Hệ thốngnày quản lý một tập lớn các trang web Nó thực hiện hai chức năngchính: chức năng thứnhất, cho phép Crawler lưu trữ các trang web Thứ hai,nó phải cung cấp API truy cập
Trang 10hiệu quả để bộ Indexer và bộ CollectionAnalysis có thể sử dụng để lấy các trang từ kho
dữ liệu
4.2.1 Các yêu cầu đối với repository
- Một Repository quản lý một tập các đối tượng dữ liệu “data object” lớn
- Có khả năng mở rộng
- Có cách truy cập kép (dual access mode): Truy nhập ngẫu nhiên được sử dụng
để nhanh chóng nhận về trang web và gán cho mỗi trang một định danh duynhất Truy cập tuần tự được sử dụng để nhận về tập hợp hoàn chỉnh, hay vàitập hợp con lớn
- Có thể cập nhật khối lượng lớn
- Loại bỏ những trang không còn tồn tại
- Kho dữ liệu được thiết kế phân tán (Distributed Repository)
4.2.2 Nguyên tắc phân tán trang
Các trang có thể được gán cho các nút dựa trên một số nguyên tắc khác nhau Nhưnguyên tắc phân tán đồng bộ (Uniform distribution), tất cả các nút được xử lý đồng nhất.Một trang có thể được gán cho một nút bất kỳ trong hệ thống Các nút sẽ chứa các phầncủa tập hợp các trang tuỳ theo khả năng lưu trữ của nút Ngược lại, với cách phân tánbăm (hash distribution) việc định vị các trang vào các nút dựa trên định danh của trang
4.2.3 Phương pháp tổ chức trang vật lý
Trong một nút đơn, có 3 thao tác có thể thực hiện: thêm trang/chèntrang (pageaddition/insertion), truy cập tuần tự tốc độ cao, và truy cập ngẫu nhiên Cách tổ chức cáctrang theo kiểu vật lý tại mỗi nút chính là việc xem xét xem mức độ hỗ trợ mỗi thao táctrên của nút đó
bổ sung các trang mới cho Repository
Trang 114.3 Bộ lập chỉ mục Indexer
Các tài liệu tải về cần phải được xử lý thích hợp trước khi thực hiện việc tìm kiếm.Việc sử dụng các từ khoá hay thuật ngữ để mô tả nội dung của tài liệu theo một khuôndạng ngắn gọn hơn được gọi là tạo chỉ mục cho tài liệu
Modul Indexer và Collection Analysis có chức năng tạo ra nhiều loại chỉ mục khác
nhau Modul Indexer tạo ra hai loại chỉ mục chính đó là chỉ mục Text Index (chỉ mục nộidung) và chỉ mục Structure Index (chỉ mục liên kết) Dựa vào hai loại chỉ mục này bộ
Collection Analysis tạo ra nhiều loại chỉ mục hữu ích khác:
Link Index: tạo chỉ mục liên kết, các đoạn web đã duyệt được biểu diễn dưới dạng
đồ thị với các đỉnh và các cạnh
Text Index: Phương pháp đánh chỉ mục dựa theo nội dung (text-based) là một
phương pháp quan trọng để định danh các trang có liên quan đến yêu cầu tìm kiếm
Chỉ mục kết hợp: Số lượng và kiểu của các chỉ mục Utility được quy định bởi bộ
Collection Analysis tuỳ thuộc vào chức năng của bộ máy truy vấn và kiểu thông tin màmodul Ranking sử dụng
Trang 12Ta xác định mục từ của một văn bản dựa vào chính nội dung của văn bản đó, hoặctiêu đề hay tóm tắt nội dung của văn bản đó.
Thông thường việc lập chỉ mục tự động bắt đầu bằng việc khảo sát tần số xuấthiện của từng loại từ riêng rẽ trong văn bản
Đặc trưng xuất hiện của từ vựng có thể được định bởi “thứ hạng-tần số”(Rank_Frequency) Các bước để xác định một mục từ quan trọng
- Cho một tập hợp n tài liệu, thực hiện tính toán tần số xuất hiện củacác mục từtrong tài liệu đó
- Ký hiệu Fik (Frequency): là tần số xuất hiện của mục từ k trong tài liệu I
- Xác định tổng tần số xuất hiện TFk (Total Frequency) cho mỗi từbằng cáchcộng những tần số của mỗi mục từ duy nhất trên tất cả n tài liệu
Ngược lại khi tần số xuất hiện của mục từ k trong tập tài liệu càngcao thì mục từ
đó càng có ý nghĩa
Lập chỉ mục tự động cho tài liệu là xác định tự động mục từ chỉ mụccho các tàiliệu.Loại bỏ các từ stop-word vì những từ này có độ phân biệtkém và không thể sử dụng
để xác định nội dung của tài liệu
Bước tiếp theo là chuẩn hoá mục từ, tức là đưa mục từ về dạngnguyên gốc bằngcách loại bỏ tiền tố, hậu tố, và các biến thể khác của từ nhưtừ ở dạng số nhiều, quá khứ,
4.3.2 Cấu trúc của chỉ mục đảo
Sau khi phân tích các trang web, và thực hiện tách các từ, chuẩn hoá các từ vềdạng nguyên gốc, loại bỏ các từ stop word Ta thu được một danh mục các từ mỗi từđược gắn kèm danh sách các trang chứa từ đó Danh mục này gọi là chỉ mục đảo(inverted index)
4.4 Bộ tìm kiếm thông tin – Search Engine
Search engine là cụm từ dùng chỉ toàn bộ hệ thống bao gồm các thành phần chính như
bộ thu thập thông tin, bộ lập chỉ mục & bộ tìm kiếm thông tin Các bộ này hoạt động liên
Trang 13tục từ lúc khởi động hệ thống, chúng phụ thuộc lẫn nhau về mặt dữ liệu nhưng độc lậpvới nhau về mặt hoạt động.
Search engine tương tác với user thông qua giao diện web, có nhiệm vụ tiếp nhận &trả về những tài liệu thoả yêu cầu của user
Tìm kiếm theo từ khóa là tìm kiếm các trang mà những từ trong câu truy vấn (query)xuất hiện, ngoại trừ stopword (các từ quá thông dụng như mạo từ a, an, the,…) Về mặthiển thị và sắp xếp kết quả trả về, một từ càng xuất hiện nhiều trong một trang thì trang
đó càng được chọn để trả về cho người dùng.Và một trang chứa tất cả các từ trong câutruy vấn thì tốt hơn là một trang không chứa một hoặc một số từ Ngày nay, hầu hết cácsearch engine đều hỗ trợ chức năng tìm cơ bản và nâng cao, tìm từ đơn, từ ghép, cụm từ,danh từ riêng, hay giới hạn phạm vi tìm kiếm như trên đề mục, tiêu đề, đoạn văn bản giớithiệu về trang web,…
Ngoài chiến lược tìm chính xác theo từ khoá, các search engine còn cố gắng “hiểu” ýnghĩa thực sự của câu hỏi thông qua những câu chữ trong truy vấn của người dùng Điềunày được thể hiện qua chức năng sửa lỗi chính tả, tìm cả những hình thức biến đổi khácnhau của một từ, ví dụ: search engine sẽ tìm những từ như speaker, speaking, spoke khingười dùng nhập vào từ speak
Trang 144.5 Phân hạng trang (Page Rank)
Sergey Brin và Lawrence Page đã đưa ra một phương pháp nhằm giúp cho côngviệc tính toán hạng trang Phương pháp này dựa trên ý tưởng rằng: nếu có liên kết từtrang A đến trang B thì đó là một sự tiến cử của trang A đối với trang B Nếu trang Bđược nhiều trang “quan trọng” hơn trỏ đến, còn trang C nào đó được ít trang “quan trọng”trỏ đến thì B cũng có độ quan trọng hơn C Giả sử ta có một tập các trang Web với cácliên kết giữa chúng, khi đó ta có một đồ thị với các đỉnh là các trang Web và các cạnh làcác liên kết giữa chúng
PR được thể hiện với 11 giá trị: từ 0 – 10, chỉ số PR càng cao thì độ uy tính của trangweb đó càng lớn
Nếu bạn dùng trình duyệt firefox, bạn có thể dụng công cụ SearchStatus tại địa chỉhttps://addons.mozilla.org/en-US/firefox/addon/searchstatus/ Hoặc bạn có thể vàohttp://seoquake.com để cài đặt công cụ SEOQuake, có thể xem với mọi trình duyệt
Công thức tính PageRank
PR(A) = (1-d) + d(PR(t1)/C(t1) + … + PR(tn)/C(tn))
- Trong đó PR(A) là Pagerank của trang A
- t1, t2…tn là các trang liên kết tới trang A
- C là số link outbound của trang nguồn t1, t2 …tn đó (link ra ngoài)
- d là hệ số suy giảm (hệ số tắt dần của chuỗi)
Trang 15Ví dụ nhé Page A của bạn có 3 trang page B (PR=6) page C (PR=3) và page D (PR = 4).Link tới Page B có 3 link dẫn ra ngoài, Page C có 6 link dẫn ra ngoài, Page D có 12 linkdẫn ra ngoài
Vậy PR của A = 0.15 + 0.85*( 6/3 + 3/6 + 4/12) =2 (xấp xỉ)
Một khi đã biết được công thức, ta có thể chủ động hơn khi trao đổi liên kết với các sitekhác Chẳng hạn nếu bạn liên kết với một site PR =7,8 gì đó và site đó chỉ có 1 linkoutbound dẫn đến bài viết trên site của ta
Trang 16PHẦN II: FRAMEWORK LUCENE
1 Giới thiệu
Lucene là một thư viện mã nguồn mở viết bằng java cho phép dễ dàng tích hợpthêm chức năng tìm kiếm đến bất cứ ứng dụng nào Nó cung cấp các API hỗ trợcho việc đánh chỉ mục và tìm kiếm Lucene có thể được sử dụng để tích hợp chứcnăng tìm kiếm vào ứng dụng sẵn có hoặc xây dựng một search engine hoàn chỉnhLucene hỗ trợ các phần sau trong các bước của quá trình tìm kiếm với searchengine
- Phân tích dữ liệu (dạng văn bản) để đánh chỉ mục: Analyze document
- Đánh chỉ mục (Index document & Index)
- Thực hiện việc xây dựng câu truy vấn và tìm kiếm trong chỉ mục: Build query,render result, run query
Lucene có thể đánh chỉ mục, tìm kiếm bất cứ dạng dữ liệu gì miễn là các dạng dữliệu này có thể chuyển về dạng dữ liệu văn bản text Do đó, Lucene không quantâm đến nguồn dữ liệu, định dạng dữ liệu thậm chí cả ngôn ngữ chỉ cần ta có thểchuyển đổi nó sang dạng văn bản Nó có thể đánh chỉ mục các dữ liệu của server
từ xa hoặc trên máy cục bộ với các tập tin có định dạng khác nhau như txt, word,html, pdf…
Hiện tại, Lucene đã được triển trên nhiều ngôn ngữ khác nhau như C#, PHP, C,C++, Python, Ruby…
2 Lucene trong các thành phần của một ứng dụng tìm kiếm
Phần này sẽ trình bày các thành phần thư viện Lucene hỗ trợ và các thành phầncần phải được tích hợp thêm để xây dựng một hệ thống search engine hoàn chỉnh.Như ta sẽ thấy, ứng dụng tìm kiếm sẽ thực hiện các bước truy lục các nội dungthông tin thô, tạo các tài liệu từ nội dung, tách ra văn bản từ các tài liệu nhị phân
và đánh chỉ mục tài liệu Khi chỉ mục đã được xây dựng, ta sẽ cần xây dựng mộtgiao diện tìm kiếm, cách thực thi tìm kiếm và hiển thị kết quả tìm kiếm
Các ứng dụng tìm kiếm có nhiều biến thể khác nhau Một số chạy như một thànhphần nhỏ được nhúng vào trong một ứng dụng Một số có thể chạy trên mộtwebsite, một cơ sở hạ tầng server chuyên biệt và tương tác với nhiều người sửdụng thông qua trình duyệt web hoặc mobile Số khác có thể chạy trong mạng