Hàng đợi lập chỉ mục của Google Cloud Search

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).

Tổng quan về hoạt động lập chỉ mục của Cloud Search
Hình 1. Các bước lập chỉ mục để thêm hoặc cập nhật một mục
  1. 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 type hoặc contentHash, 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.
  2. 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.
  3. 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.
  4. 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ái ACCEPTED sau 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.

Tổng quan về hoạt động lập chỉ mục của Cloud Search
Hình 2. Xoá các mục
  1. 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".
  2. Trình kết nối thăm dò hàng đợi A và lập chỉ mục các mục.
  3. 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.
  4. Trình kết nối thăm dò hàng đợi B và lập chỉ mục các mục.
  5. Cuối cùng, trình kết nối sẽ gọi deleteQueueItems trê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".
  6. 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)

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.