Archive for June, 2010
Những người mới bắt đầu làm quen với Lucene thường nhầm lẫn nó là ứng dụng sẵn sàng để sử dụng, như một chương trình tìm kiếm file, một web crawler, một web search engine, đó đều không phải là Lucene. Lucene đơn thuần là một thư viện phần mềm, một bộ công cụ chứ không phải là một ứng dụng tìm kiếm có đầy đủ tính năng. Nó tập trung vào 2 quá trình indexing và searching và nó thực hiện 2 công việc này rất tốt, ngoài ra nó không hỗ trợ gì hơn. Lucene cho phép ứng dụng tự do làm việc với những qui luật nghiệp vụ đặc thù, trong khi giấu đi sự phức tạp đối với indexing và searching bên dưới các API đơn giản để sử dụng. Lucene là phần lõi và chương trình tìm kiếm là vỏ bọc bên ngoài.
Lucene là một thư viện truy vấn thông tin (Information Retrieval – IR) có hiệu năng cao và mềm dẻo. Truy vấn thông tin liên quan đến quá trình tìm kiếm thông tin nằm trong tài liệu hoặc siêu dữ liệu mô tả tài liệu. Lucene cho phép thêm tính năng tìm kiếm vào trong ứng dụng. Nó là một dự án mã nguồn mở, miễn phí và ổn định, được cài đặt bằng ngôn ngữ Java, và là một dự án thành viên của Apache Software Foundation, phân phối dưới giấy phép Apache Software License. Do đó, trong những năm gần đây, Lucene là thư viện IR phổ biến nhất được sử dụng.
Một search engine đầy đủ các tính năng, đặc biệt là chạy trên website, ngoài crawling, indexing và searching, thì một engine cũng cần phải có:
· Administration: theo dõi trạng thái của ứng dụng, cấu hình các thành phần khác nhau, chạy và dừng các máy chủ.
· Analytics: thống kê người dùng đang tìm kiếm gì, đưa ra lời hướng dẫn xem cái gì đang hoạt động và cái gì không.
· Scaling: đối với một ứng dụng tìm kiếm lớn, việc mở rộng theo cả khối lượng nội dung và số lượng yêu cầu tìm kiếm đồng thời là tính năng quan trọng.
Searching là quá trình dò tìm từ hay cụm từ trong các chỉ mục để xác định những document nào chứa chúng. Chất lượng của công việc tìm kiếm này được đánh giá bởi thang đo recall và precision. Recall cho biết hệ thống tìm ra những document có liên quan tốt như thế nào, trong khi precision cho biết khả năng của hệ thống loại bỏ các document không thích hợp.
Tuy nhiên, còn có những yếu tố khác cũng quan trọng không kém đối với quá trình searching. Như đã trình bày, tốc độ và khả năng tìm kiếm trên một khối lượng lớn văn bản là 2 trong số các yếu tố đó. Ngoài ra còn có thể kể đến như tính năng hỗ trợ câu truy vấn đơn và kép, wildcard, truy vấn mờ, xếp hạng kết quả, sắp xếp trên dữ liệu trả về, độ thân thiện của cú pháp truy vấn.
Searching trải qua 4 bước cơ bản: user interface, build query, run query và render results.