Crawler-Based Search Engines: lần tìm các trang trê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ó.. Giới thiệuLucene là một thư viện mã nguồn mở viết bằ
Trang 1Đề tài: Tìm hiểu nguyên lý SE
framework Lucene & ứng dụng Nutch
GVHD: Ths Hoàng Anh Việt
Nguyễn Thế Anh 20080070 Trần Anh Thơ 20082569 Nguyễn Vương Quyền 20082142 Nguyễn Văn Hưng 20081293
Nhóm sinh viên:
Trang 2Nội dung
Nguyên lý và mô hình SE (Search engine)
Lucene
Nutch
Trang 3Nguyên lý và mô hình SE
Trang 41 Giới thiệu
Trang 51 Giới thiệu
SE là phần mềm nhằm tìm ra các trang trên mạng Internet có nội dung theo yêu cầu người dùng
Crawler-Based Search Engines: lần tìm các trang trê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ó
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
Trang 62 Phân loại
2.1 Máy tìm kiếm thông thường
Tìm kiếm theo qui trình thu thập tài liệu, phân loại
và tạo chỉ mục
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 trang trên Internet vào các thư mục chủ
đề và theo các cấp chi tiết hơn của chủ đề
Trang 72 Phân loại
2.2 Máy siêu tìm kiếm
Trang 82 Phân loại
2.2 Máy siêu tìm kiếm
Là loại máy truy tìm ảo, hoạt động dựa trên sự tồn tại của các Search Engine sẵn có
Không có cơsở dữ liệu của riêng mình
Khi có yêu cầu tìm kiếm gửi từ khóa đến các Search Engine khác phân tích và phân hạng lại các kết quả tìm được
Trang 93 Nguyên lý
Trang 103 Nguyên lý
Robot đi thu thập thông tin trên mạng
Robots phải liên tục cập nhật các site cũ
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 114 Mô hình
4.1 Bộ tìm duyệt Crawler
Page selection
Interest Driven: dựa vào mức độ quan tâm của
người sử dụng với các trang đó
Popularity Driven: dựa vào mức độ phổ biến của
trang
Location Driven: xác định mức độ quan trong của
Trang 12hạ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 k trang 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
Trang 134 Mô hình
4.1 Bộ tìm duyệt Crawler
Page refresh
Uniform refresh policy: cập nhật đồng loạt
Crawler ghé thăm lại tấ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
Trang 144 Mô hình
4.2 Kho dữ liệu repository
Yêu cầu với repository
Có khả năng mở rộng
Có cách truy cập kéo
Có thể cập nhật khối lượng lớn
Loại bỏ trang không tồn tại
Kho dữ liệu được thiết kế phân tán
Trang 154 Mô hình
4.2 Kho dữ liệu repository
Nguyên tắc phân tán trang
Phân tán đồng bộ
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ần của tập hợp các trang tuỳ theo khả năng lưu trữ của nút
Phân tán băm
Việc định vị các trang vào các nút dựa trên định danh của trang.
Trang 164 Mô hình
4.2 Kho dữ liệu repository
Phương pháp tổ chức vật lý
Trong một nút đơn, có 3 thao tác có thể thực hiện:
Thêm trang/ chèn trang (page addition/insertion), truy cập tuần tự tốc độ cao, và truy cập ngẫu nhiên.
Cách tổ chức các trang 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ác trên của nút đó
Trang 184 Mô hình
4.3 Bộ lập chỉ mục Indexer
Trang 19 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ủa các mục từ trong tài liệu đó.
Xác định tổng tần số xuất hiện TFk (Total Frequency) cho mỗi từ bằng cách cộ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.
Trang 214 Mô hình
4.4 Bộ tìm kiếm thông tin
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 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
Trang 224 Mô hình
4.5 Phân hạng trang
Trang 24Giớ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ợp thêm chức
năng tìm kiếm đến bất cứ ứng dụng nào
Được phát triển bởi Dough Cutting (cũng là tác giả của Hadoop, Nutch…)
Cung cấp các API hỗ trợ cho việc đánh chỉ mục
và tìm kiếm
Hiện tại, Lucene đã được mở rộng ra nhiều
ngôn ngữ khác nhau như C#, PHP, C, C++,
Python, Ruby…
Trang 25Giới thiệu (tiếp)
Lucene có thể được sử dụng để tích hợp chức nă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ỉnh
Hỗ trợ thực hiện
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, run query
Trang 26Lucene trong ứng dụng tìm kiếm
Users
Search user interface
Build Query
Build Query Render result
Run query
Index
Index Document
Analyze Document
Analyze Document
Build Document Acquire content
Raw content
Các chức năng Lucene hỗ
trợ
Trang 27Acquire content
Sử dụng một crawler (hay spider) để thu thập các thông tin cần đánh chỉ mục
Crawler sẽ cập nhật các cập nhật ở nguồn dữ liệu (raw content)
Lucene không hỗ trợ chức năng này
Một số thư viện mã nguồn mở hỗ trợ
Solr: Một project con của Apache Lucene thu thập dữ liệu trong CSDL quan hệ, XML feeds…
Nutch: Project của Apache, có crawler cho
phép thu thập dữ liệu từ các website
Trang 28Build document
Chuyển các thông tin thu thập
được này thành các đơn vị (units)
thường được gọi là các Document
Một Document có thể ứng với một
webpage, file pdf, file doc, txt…
Một Document chứa các trường
(Field) là các thuộc tính của
Document đó VD: Title, Content,
Author, Url…
Cần tách được text từ các thông
tin thô
Để lấy được text của tài liệu dạng
nhị phân cần Document Filter –
Lucene không hỗ trợ chức năng
này
Có thể sử dụng Tika
Trang 29Analyze document
Chia nhỏ text thu được thành các token
Tách từ
Loại bỏ các stop word
Thực hiện biến chữ hoa thành chữ thường
Các thành phần thu được sẽ được đánh chỉ mục
Lucene cung cấp bộ phân tích token được xây dựng sẵn
Trang 31Build query
Dịch các truy vấn của user thành Query
Truy vấn có thể chứa các toán tử boolean, các
ký tự đại diện…
VD Book AND Pen
Có thể thay đổi truy vấn hoặc rank của các
kết quả đầu ra
VD: query.setBoost()
Trang 32Run query
Tìm kiếm chỉ mục và lấy ra các kết quả được xếp hạng
Có 3 mô hình tìm kiếm
Pure boolean model: Các tài liệu chỉ có một trong
2 trạng thái là khớp và không khớp với truy vấn,
không được đánh trọng số
Vector space model: Truy vấn và tài liệu được mô hình hóa như các vector trong không gian vector Tìm kiếm dựa vào khoảng cách giữa các vector
Probabilistic model: Tìm kiếm dựa trên xác suất
Lucene kết hợp mô hình Vector space model và Pure boolean model
Trang 33Render result
Trả lại các kết quả phù hợp với truy vấn
Các kết quả được phân hạng theo mức độ phù hợp
Trang 35Các lớp đánh chỉ mục
IndexWriter: Tạo, cập nhật chỉ mục
Directory: Thư mục chứa chỉ mục của Lucene
Analyzer: Xử lý, biến đổi text thành các
tokens trước khi đánh chỉ mục
Document: Đặc trưng cho một tài liệu
Trang 36Các lớp tìm kiếm
IndexSearcher: Tìm kiếm chỉ mục
Term: Là một đơn vị cơ bản của tìm kiếm
Query: Là lớp trừu tượng mô tả truy vấn
TopDocs: Là lớp chứa danh sách các tham
chiếu đến tài liệu trả về Các tài liệu trả về sẽ theo thứ tự của mức độ phù hợp
Trang 37Demo Lucene
Trang 38Nutch
Trang 39Định nghĩa
Nutch là một search engine mã nguồn mở cài đặt
trên ngôn ngữ lập trình Java Nutch cung cấp tất cả các công cụ cần thiết để cho phép ta tạo ra một
search engine (SE) của riêng mình.
Nutch được xây dựng trên nền tảng lưu trữ và tính toán phân tán, do vậy Nutch có thể được mở rộng để hoạt động trên các tập dữ liệu lớn.
Trang 40Nền tảng phát triển của Nutch
Lucene: bộ thư viện nguồn mở có chức năng xây dựng chỉ mục và tìm kiếm.
Hadoop: cung cấp một nền tảng tính toán phân tán với một hệ thống tập tin phân tán.
Tika: một bộ công cụ dùng để phát hiện và rút trích các metadata và những nội dung văn bản có cấu trúc từ
những loại tài liệu khác nhau Nutch sử dụng Tika để
phân tách các loại tài liệu khác nhau nhằm sử dụng cho quá trình tạo chỉ mục.
Trang 41Tính năng của Nutch
Hỗ trợ nhiều protocol khác nhau như http,
Linh hoạt với các plugin: phát triển hay mở
rộng tính năng của Nutch.
Trang 42Kiến trúc Nutch
Trang 43Kiến trúc của Nutch
Nutch bao gồm hai thành phần là trình thu
thập thông tin (Crawler) và trình tìm kiếm
thông tin (Searcher).
Crawler: lấy dữ liệu từ các trang và tạo ra bộ chỉ mục ngược (inverted index).
Searcher sử dụng inverted index để trả lời
câu truy vấn query.
Trang 44The Crawler
Trình thu thập thông tincrawler bao gồm bốn thành phần là
Cơ sở dữ liệu web hay viết tắt là webdb
Các phân đoạn (segments)
Bộ chỉ mục index
Công cụ thu thập thông tin crawl tool
Trang 45Web Database (WebDB)
Cấu trúc dữ liệu lưu trữ lâu dài (persistent) để phản ánh cấu trúc và tính chất của đồ thị web mà đã thu thập được.
Chỉ được sử dụng bởi crawler và không có vai trò gì trong quá trình tìm kiếm searching.
Lưu trữ hai kiểu thực thể:
Pages: trang trên web
Links: tập các liên kết từ một trang đến một
trang khác
Trang 46Segments: tập các trang được crawler tìm và đánh chỉ mục trong một lần thực thi.
Giới hạn thời gian tồn tại (được đặt tên theo
ngày và thời gian tạo ra)
Fetchlist hay tập các trang tìm thấy cho một segment là một tập các URL để crawler tìm.
Trang 47Nutch sử dụng Lucene để đánh chỉ mục
Là chỉ số đảo ngược (inverted index) của tất
cả các trang mà hệ thống đã truy xuất.
Mỗi segment có sáu chỉ mục
Inverted index được tạo ra bằng cách trộn
tất cả các chỉ số của segment
Trang 48chu kỳ generate/fetch/update
Thu thập thông tin là một chu trình xử lí
(cyclical process):
Trang 49chu kỳ
generate/fetch/update
Generate: một danh sách các URL sẽ được phát sinh ra để dùng trong quá trình nạp Các URL được chọn là các URL trong webdb có tình trạng
là “chưa nạp” hoặc “đã lỗi thời” Số lượng URL được phát sinh ra trong
danh sách có thể bị giới hạn lại theo ý muốn
Fetch:một trình tự động (fetcher) tự động tải các tài liệu từ danh sách
URL được phát sinh ra từ bước generate
Parse: dữ liệu nhị phân có được từ giai đoạn nạp sẽ được phân tách ra để trích lấy các thông tin như các link, metadata và các thông tin văn bản khác
để dùng cho việc tạo inverted index sau này.
Update: trạng thái của mỗi URL được nạp cũng như danh sách các URL mới có được từ quá trình parse đều sẽ được trộn vào phiên bản trước của
Trang 50Tài liệu tham khảo
Việt
Mccandless, Erick Hatcher, Otis Gospodnetic