Câu lệnh query sử dụng phân trang con trỏ

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 127 - 129)

Cách phân trang này sẽ giải quyết được vấn đề lặp lại khi xem nội dung có thứ tự thay đổi liên tục.

6.4 Tìm kiếm

6.4.1 Xây dựng index

Hệ thống sử dụng ElasticSearch để hiện thực các chức năng tìm kiếm. Ở ElasticSearch, đơn vị tương ứng với bảng của SQL là một index. Cũng tương tự như bảng ở SQL, để tạo một index, ta cần định nghĩa các trường dữ liệu (gọi là mapping) và các siêu dữ liệu (còn gọi là

settings) mơ tả các đặc tính của index đó. Các trường dữ liệu thường có kiểu mapping gần như

1 – 1 với kiểu dữ liệu của SQL, với một số lưu ý sau:

 Đối với kiểu dữ liệu dạng số và dạng ngày, ElasticSearch có kiểu tương ứng: integer,

 Đối với kiểu dữ liệu là chuỗi, ta có hai lựa chọn: text và keyword. Điểm khác biệt là ở chỗ keyword chỉ cho phép tìm kiếm chính xác (cịn gọi là term query), cịn text cho phép tìm kiếm dựa trên siêu thơng tin analyzer được gán cho biến đó (gọi là match

query). Hệ thống sử dụng kiểu text đối với các trường mà người dùng muốn tìm kiếm

kết quả dựa trên: ví dụ như đối với khóa học thì là tên và thơng tin mơ tả khóa học. Hệ thống cũng sử dụng kiểu keyword cho những nghiệp vụ: lọc kết quả (ví dụ lọc khóa học theo thể loại của khóa học và sắp xếp dữ liệu (sắp xếp khóa học theo tên của khóa học).

 Một trường có thể thuộc nhiều kiểu dữ liệu khác nhau để phục vụ mục đích khác nhau, gọi là multi-fields. Ở hình dưới, nhóm làm đề tài định nghĩa title của người dùng được lưu trữ cùng kiểu text nhưng có hai analyzer khác nhau. Một ví dụ khác có thể kể đến là tên của người dùng vừa có thể được index ở dạng text phục vụ tìm kiếm, vừa ở dạng keyword để phục vụ việc sắp xếp.

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 127 - 129)

Tải bản đầy đủ (PDF)

(185 trang)