Connector SDK và Cloud Search API hỗ trợ việc tạo Hàng đợi lập chỉ mục Cloud Search. Sử dụng các hàng đợi này để:
- Duy trì trạng thái của từng tài liệu (trạng thái, hàm băm, v.v.) để giữ cho chỉ mục của bạn luôn đồng bộ.
- Duy trì danh sách các mục cần lập chỉ mục, như được phát hiện trong quá trình duyệt.
- Ưu tiên các mục dựa trên trạng thái của chúng.
- Duy trì thông tin trạng thái như điểm kiểm tra và mã thông báo thay đổi.
Hàng đợi là nhãn được gán cho một mục đã lập chỉ mục (ví dụ: "default").
Trạng thái và mức độ ưu tiên
Mức độ ưu tiên của một tài liệu phụ thuộc vào mã
ItemStatus
của tài liệu đó. Các mã có thể có, theo thứ tự ưu tiên (từ cao nhất đến thấp nhất) là:
ERROR: Mục gặp phải lỗi không đồng bộ và cần lập chỉ mục lại.MODIFIED: Mục đã được lập chỉ mục trước đó nhưng đã thay đổi trong kho lưu trữ.NEW_ITEM: Mục chưa được lập chỉ mục.ACCEPTED: Mục đã được lập chỉ mục trước đó và không thay đổi.
Đối với các mục có cùng trạng thái, mức độ ưu tiên cao hơn sẽ dành cho những mục đã ở trong hàng đợi lâu nhất.
Lập chỉ mục một mục mới hoặc đã thay đổi
Hình 1 cho thấy các bước để lập chỉ mục một mục mới hoặc đã thay đổi bằng hàng đợi lập chỉ mục. Các bước này phản ánh các lệnh gọi API REST; để biết các lệnh gọi tương đương của SDK, hãy xem Thao tác với hàng đợi (Connector SDK).
- Trình kết nối nội dung sử dụng
items.pushđể đẩy siêu dữ liệu và hàm băm vào hàng đợi.- Nếu trình kết nối bao gồm một đẩy
typehoặccontentHash, Cloud Search sẽ xác định trạng thái. - Các mục không xác định sẽ nhận được trạng thái
NEW_ITEM. - Các mục hiện có có hàm băm phù hợp sẽ giữ nguyên trạng thái
ACCEPTED. - Các mục hiện có có hàm băm khác nhau sẽ trở thành
MODIFIED.
- Nếu trình kết nối bao gồm một đẩy
- Trình kết nối sử dụng
items.pollđể xác định mục nào cần lập chỉ mục. Cloud Search trả về các mục theo thứ tự ưu tiên. - Trình kết nối truy xuất các mục từ kho lưu trữ và tạo yêu cầu API lập chỉ mục.
- Trình kết nối sử dụng
items.indexđể lập chỉ mục các mục. Một mục sẽ chuyển sang trạng tháiACCEPTEDsau khi xử lý thành công.
Xóa mục
Chiến lược duyệt toàn bộ sử dụng hai hàng đợi để lập chỉ mục các mục và phát hiện các mục bị xoá. Hình 2 cho thấy lần duyệt thứ hai trong chiến lược này.
- Trong lần duyệt ban đầu, trình kết nối sẽ đẩy các mục vào "hàng đợi A" dưới dạng
NEW_ITEM. Mỗi mục sẽ nhận được nhãn "A". - Trình kết nối thăm dò hàng đợi A và lập chỉ mục các mục.
- Trong lần duyệt toàn bộ thứ hai, trình kết nối sẽ đẩy các mục vào "hàng đợi B".
- Các mục không xác định sẽ nhận được nhãn "B" và trạng thái
NEW_ITEM. - Các mục hiện có có hàm băm phù hợp sẽ thay đổi nhãn thành "B" và giữ nguyên trạng thái
ACCEPTED. - Các mục hiện có có hàm băm khác nhau sẽ thay đổi nhãn thành "B" và trở thành
MODIFIED.
- Các mục không xác định sẽ nhận được nhãn "B" và trạng thái
- Trình kết nối thăm dò hàng đợi B và lập chỉ mục các mục.
- Cuối cùng, trình kết nối sẽ gọi
deleteQueueItemstrên hàng đợi A. Thao tác này sẽ xoá tất cả các mục đã lập chỉ mục trước đó vẫn có nhãn "A". - Các lần duyệt tiếp theo sẽ hoán đổi vai trò của hai hàng đợi.
Thao tác với hàng đợi (Connector SDK)
Sử dụng trình tạo để chuyển các mục đến.pushItems SDK sẽ tự động kéo các mục từ hàng đợi theo
thứ tự ưu tiên bằng phương thức
getDoc
của lớp Repository.
Thao tác với hàng đợi (API REST)
- Để đẩy: sử dụng
Items.push. - Để thăm dò: sử dụng
Items.poll.
Bạn cũng có thể sử dụng
Items.index
để đẩy các mục trong quá trình lập chỉ mục. Các mục này sẽ tự động nhận được trạng thái ACCEPTED.
Items.push
Phương thức này thêm mã nhận dạng vào hàng đợi. The
type
xác định kết quả. Việc đẩy một mã nhận dạng mới sẽ thêm một mục có trạng thái NEW_ITEM.
Tải trọng không bắt buộc sẽ trả về trong quá trình thăm dò.
Các mục được thăm dò sẽ được dành riêng và không thể được trả về bằng các lệnh gọi thăm dò khác. Việc sử dụng Items.push với type được đặt thành NOT_MODIFIED, REPOSITORY_ERROR hoặc REQUEUE sẽ huỷ dành riêng các mục.
Items.push có hàm băm
Chỉ định siêu dữ liệu hoặc hàm băm nội dung trong yêu cầu đẩy.
Cloud Search so sánh các giá trị này với các giá trị đã lưu trữ. Nếu không khớp, mục sẽ trở thành MODIFIED. Các mã nhận dạng không khớp không tồn tại sẽ trở thành NEW_ITEM.
Items.poll
Phương thức này truy xuất các mục có mức độ ưu tiên cao. Mỗi mục được trả về sẽ được dành riêng cho đến khi hết thời gian chờ, được lập chỉ mục lại hoặc bị huỷ dành riêng bằng Items.push.