Cụ thể, tôi đang sử dụng Elasticsearch để phân trang, nhưng câu hỏi này có thể áp dụng cho bất kỳ cơ sở dữ liệu nào.Cách xử lý phân trang khi dữ liệu nguồn thay đổi thường xuyên
Elasticsearch cung cấp các phương pháp cho paginate search results với các tham số tiện dụng from
và to
.
Vì vậy, tôi chạy truy vấn get me the most recent data from result 1 to 10
Điều này rất hữu ích.
Người dùng nhấp chuột "trang kế tiếp" và truy vấn là: get me the most recent data from result 11 to 20
Vấn đề là trong thời gian giữa hai truy vấn, 2 kỷ lục mới đã được thêm vào cơ sở dữ liệu ủng hộ, có nghĩa là các kết quả phân trang sẽ trùng lặp (2 cuối cùng từ trang đầu tiên hiển thị dưới dạng hai trang đầu tiên trên trang thứ hai).
Giải pháp tốt nhất để tránh điều này là gì? Ngay bây giờ, tôi đang thêm bộ lọc vào truy vấn cho biết nó chỉ bao gồm kết quả sau kết quả cuối cùng của truy vấn trước đó. Nhưng nó chỉ có vẻ hackish.
Cảm ơn bạn đã giải thích chi tiết. Vì lý do nào đó, tôi đã nghĩ rằng quét/di chuyển là điều tương tự, nhưng điều đó rõ ràng là không đúng! Di chuyển có vẻ như là một lựa chọn tốt khi bạn không có thứ gì đó giống như dấu thời gian mới nhất để lọc. – bradvido
Hạn chế cho việc lọc dấu thời gian là nếu ai đó xóa tài liệu, bạn có thể bỏ qua tài liệu từ trang kết quả tiếp theo? – writofmandamus
Lưu ý từ tài liệu API cuộn 'Cuộn không dành cho các yêu cầu người dùng thời gian thực,' – Ben