7. Bảng phân công nhiệm vụ và đóng góp cho đề tài
1.3.2. Mã nguồn mở Lucene
Lucene là một thư viện cung cấp các hàm cơ bản hỗ trợ tìm kiếm thông tin, nó có khả năng xử lý và mở rộng ở mức cao, cho phép chúng ta có thể tích hợp vào các ứng dụng, nguyên thủy của nó được phát triển trên nền tảng java, hiện hay đã được phát triển với nhiều ngôn ngữ khác như Perl, C#, Ruby, Php,…. Dữ liệu để tìm kiếm có thể là tập hợp các tập tin dạng Pdf, Word hay các trang web HTML, hoặc là các dữ liệu lưu trữ trong các hệ quản trị cơ sở dữ liệu như MS SQL, MySQL.
Các thành phần chức năng chính của Lucene gồm các thành phần sau:
(1) Thành phần mô tả đối tượng cần đánh chỉ mục.
Lucene coi mỗi đối tượng cần đánh chỉ mục là một Document. Mỗi Document có thể có nhiều Field, mỗi Field tương ứng một thuộc tính của đối tượng cần đánh chỉ mục. Ví dụ, bạn muốn tìm kiếm các trang web ở dạng HTML. Như vậy đối tượng cần đánh chỉ mục là trang HTML; các thuộc tính có thể là nơi lưu trữ
Sinh viên thực hiện: Trịnh Xuân Lợi Trang 30
(host), đường dẫn, tiêu đề, metadata và nội dung của chính trang web.
Với mỗi Field, bạn có thể chọn giữa đánh chỉ mục hay không đánh chỉ mục. Nếu chọn đánh chỉ mục, bạn có thể tìm kiếm trên Field đó. Các Field không đánh chỉ mục thường là các Field không quan trọng trong quá trình tìm kiếm và phục vụ chủ yếu cho nhu cầu trình bày kết quả trả về.
(2) Thành phần tạo chỉ mục: Bao gồm các phần chức năng xử lý tạo chỉ mục, từ văn bản đầu vào để cho ra kết quả là một tập chỉ mục. Lucene chỉ hỗ trợ trên văn bản sau khi được tách nội dung ở dạng ký tự thuần, nó cho phép lập chỉ mục trên từng trường thông tin của văn bản và cho phép thiết lập hệ số cho từng trường thông tin để nâng cao vai trò lúc tìm kiếm.
- Directory: cho phép định nghĩa vùng nhớ, xác định nơi lưu trữ trên bộ nhớ ngoài và bộ nhớ trên RAM trong quá trình tạo chỉ mục
- Document và Field: định nghĩa tài liệu và các trường thông tin của tài liệu sử dụng cho lập chỉ mục, nó cũng sử dụng cho việc lấy kết quả trả về cho thành phần Tìm kiếm
- Analyzer: thực hiện chức năng xử lý và tách văn bản để lấy nội dung, chuẩn hóa, loại bỏ mục từ không cần thiết,… để chuẩn bị cho việc lập chỉ mục
- IndexWriter: là phần chính trong thành phần tạo chỉ mục, nó có chức năng tạo mới hoặc mở chỉ mục, sau đó thực hiện thêm mới và cập nhật nội dung của chỉ mục.
(3) Thành phần tìm kiếm: Bao gồm các phần chức năng cho xử lý tìm kiếm, từ yêu cầu của người dùng, thông qua biên dịch và so khớp để lấy về kết quả tốt nhất.
Lucene hỗ trợ nhiều loại truy vấn thuận tiện cho người sử dụng, nó cho phép tìm theo trường thông tin hay các thiết lập nâng cao như sắp xếp kết quả, giới hạn thời gian hoặc số lượng kết quả, phân trang…
- Term: Term là một đơn vị cơ bản của tìm kiếm, tương tự như thành phần Field, Term cũng bao gồm tên và giá trị tương ứng.
- Query: Bao gồm nhiều loại truy vấn khác nhau, nó chứa nhiều phương thức, nhưng hầu hết đều quan tâm đến việc thiết lập chỉ số Boost, cho phép Lucene
Sinh viên thực hiện: Trịnh Xuân Lợi Trang 31
hiểu truy vấn con nào là quan trọng hơn.
- IndexSearcher: Cho phép tìm kiếm trên tập chỉ mục do IndexWriter tạo ra, đây là thành phần chỉ thực hiện nhiệm vụ mở tập chỉ mục, không cho phép chỉnh sửa hay thay đổi. Có nhiều phương thức tìm kiếm, một trong số đó là lớp thành phần thực thi Searcher, với cách đơn giản là cung cấp một Query truy vấn, số lượng các liên kết cần trả về, và kết quả trả về sẽ là tập các đối tượng TopDoc.
- TopDoc: Là một lớp đơn giản, dùng cho việc chứa các thứ hạng cao nhất của N tài liệu có liên quan đến truy vấn. Với mỗi đối tượng trong danh sách này sẽ cho một docID dùng để liên kết đến tài liệu nhận về