Lucene là gì

1. Giới thiệu về Lucene

Bài viết hôm trước tôi đã giới thiệu về NOSQL, cấu trúc của NoSQL không ràng buộc vậy việc tìm kiếm thông tin trên dữ liệu NoSQL có khó không? Có thư viện nào hỗ trợ không?Câu trả lời ở đây là bạn đừng lo, có rất nhiều thư viện để trợ giúp điều đó. Hôm nay tôi xin giới thiệu về một thư viện tìm kiếm toàn văn bản tên là Lucene.Lucene được phát triển bởi Dough Cutting vào tháng 8 năm 2000, hiện tại đang được Apache phát triển và hỗ trợ. Lucene hỗ trợ cho việc đánh index- chỉ mục và tìm kiếm. Dữ liệu tìm kiếm có thể là tập tin dạng PDF, Word hay HTML, Json,... hoặc dữ liệu trong các hệ quản trị dữ liệu như MS SQL, SQL server hay MySQL. Lucene bắt đầu được phát triển trên ngôn ngữ java, đến nay thì được phát triển bằng nhiều ngôn ngũ như Perl, C++/C#, Python, Ruby, PHP,...

Bạn đang xem: Lucene là gì

*

2. Chức năng của Lucence

Qua khái niệm trên có thể thấy một phần sức mạnh của Lucence rồi đúng không? Lucence có khả năng tìm kiếm với cả dữ liệu cấu trúc và dữ liệu phi cấu trúcDữ liệu cấu trúc và phi cấu trúc được nhắc qua trong bài giới thiệu trước về NoSQL. Dữ liệu có cấu trúc là dữ liệu được lưu trong các hệ quản trị như MySQL, MS SQL server,... Các cấu trúc được quy định sẵn ví dụ như bảng customer bao gồm các trường như là tên, số điện thoại, ngày sinh, địa chỉ.Dữ liệu không cấu trúc là dữ liệu không cần định nghĩa sẵn được tổ chức thành các documents có thể ở dạng văn bảnNếu ở các cơ sở quản trị dữ liệu gọi chung SQL chỉ có thể bị hạn chế bởi cú pháp của ngôn ngữ truy vấn, hoặc truy vấn với dữ liệu tìm kiếm quá lớn khiến bị chậm.Giải quyết vấn đề trên người ta đã xây dựng Lucence- Thư viện tìm kiếm trên toàn văn bản.

Đánh chỉ mục (Index): Đầu tiên, Lucene giúp bạn phân loại chỉ mục, quản lý như các Document. Việc đánh chỉ mục được thực hiện qua những bước sau.

Đầu tiên, thu thập dữ liệu (Acquire content), ở bước này thường là crawler hoặc spider để thu thập dữ liệu đánh chỉ mục.Tiếp theo là bước xây dựng tài liệu (Build document). Ở bước này thì dữ liệu thô thu nhập ở trên được chia thành các document và các trường text, nhưng các search engine vẫn chưa đánh chỉ mục luôn được mà cần được chuyển sang phân tích tài liệu.Phân tích tài liệu (Analyze document): Ở đây text được chia nhỏ thành các token, mỗi token được hiểu là một từ trong tài liệu. Document được xác định bởi dãy các tokenBước cuối cùng là đánh chỉ mục. Lucene cung cấp API đầy đủ cho việc đánh chỉ mục trở nên dễ dàng hơn.

Truy vấn (query): Khi người sử dụng gửi lên 1 submit thì hệ thống search engine cần phân tích thành câu query cho hệ thống có thể hiểu, bước này gọi là (Build query). Lucene cung cấp gói QueryParser để biến câu truy vấn của người sử dụng thành câu query của hệ thống.Truy vấn có thể là các toán tử boolean hoặc các phép toán liên quan, hoặc tổng hợp, phân tích,...

Xem thêm: Hướng Dẫn Nhận Quà Boom Online Hoàn Toàn Miễn Phí 100, Boom Online

Tìm kiếm (search): Là quá trình tra cứu và tìm ra kết quả phù hợp với câu truy vấn của người sử dụng và đưa ra kết quả. Ở đây thường query theo 3 mô hình: Mô hình toán tử Boolean, mô hình vector, mô hình xác suất. Những mô hình này đã được giới thiệu trong bài truy vấn thông tin (IR).

Display: Render các kết quả tìm kiếm sắp xếp theo thứ tự phù hợp và hiển thị cho người sử dụng. Ở đây, kết thúc một phiên tìm kiếm.

3. Những câu hỏi thường gặp

- Lucene khác gì tìm kiếm toàn văn bản của Mysql và MS SQL Server?

Lucene có thể tìm kiếm không chỉ với những DB có ngôn ngữ SQL, mà rất nhiều văn bản được viết bằng ngôn ngữ khác.Lucene còn mở rộng các thành phần hiện có phù hợp với tìm kiếm của người sử dụng.

-Lucene có mạnh bằng Google tìm kiếm không?

Câu trả lời là không. Google tìm kiếm là một hệ thống tìm kiếm search engine phức tạp hơn rất nhiều còn Lucene chỉ là thư viện hỗ trợ tìm kiếm thôi4. Danh mục tham khảo

https://lucene.apache.org/core/documentation.html