CHƯƠNG 4: SEARCH 4.1 Khái niệm về search:
4.2 Các lớp thực hiện Searching trong Lucene:
Giao diện tìm kiểm cở bản mà Lucene cung cấp cũng rất dễ hiểu như việc đánh chỉ mục (indexing). Chúng ta chỉ cần quan tâm đến các lớp sau:
− IndexSearcher − Term
− Query − TermQuery − Hits
• IndexSearcher
IndexSearcher là để thực hiện việc tìm kiếm những gì mà IndexWriter đã đánh chỉ mục (indexing). IndexSearcher là 1 class mà nó có thể mở các file index ra ở trạng thái chỉ đọc. Nó cung cấp một số các phương thức để tìm kiếm. Nó chỉ cần nhận một đối tượng thuộc lớp Query và sau đó nó trả về cho ta một đối tượng Hits - đối tượng này chứa 1 tập các Document đã tìm thấy được.
• Term
Một Term là đơn vị cơ bản nhất của quá trình tìm kiếm (Searching). Tương tự như Field, nó chứa 2 phần: một phần là tên field, và phần còn lại là giá trị của Field, chú ý rằng đối tượng Term cũng có khi được sử dụng trong quá trình đánh chỉ mục (indexing). Trong quá trình tìm kiếm bạn có thể tạo ra đối tượng Term và sử dụng chúng cùng với TermQuery.
• Query
Query là một lớp Abstract, bởi thế cho nên ta không thể dùng toán tử New để tạo ra một đối tượng Query. Để tạo ra đối tượng thuộc lớp Query, chúng ta phải sử dụng các lớp con của nó. Sau đây là danh sách các lớp con của lớp Query:
BooleanQuery
TermQuery
PrefixQuery
WildcardQuery
FuzzyQuery
Chúng ta sẽ tìm hiểu chi tiết các lớp con này sau. Bây giờ chúng ta tìm hiểu lớp TermQuery trước, bởi vì nó đơn giản nhất.
• TermQuery
TermQuery là lớp con cơ bản nhất của lớp Query. Nó còn là một loại Query nguyên thủy nhất. Nó được sử dụng để tìm ra các document chứa các field với giá trị xác định. Một cách sơ đẳng nhất để tìm kiếm trên một Index là dựa vào 1 Term.
• Hits
Hits là một class đóng vai trò như một thùng chứa, và nó chứa các Document đã được tìm thấy. Vì lý do hiệu suất cho nên Hits không load từ Index toàn bộ các Document đã được tìm thấy, mà chỉ load một phần nhỏ tại một thời điểm.