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. Hãy sử dụng các hàng đợi này để:

  • Duy trì trạng thái cho từng tài liệu (trạng thái, hàm băm, v.v.) để giữ chỉ mục của bạn ở trạng thái đồng bộ hoá.
  • Duy trì danh sách các mục cần lập chỉ mục, được phát hiện trong quá trình duyệt qua.
  • Ư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 chỉ định cho một mục đượ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 này gặp lỗi không đồng bộ và cần lập chỉ mục lại.
  • MODIFIED: Trước đây, mặt hàng này đã được lập chỉ mục nhưng đã thay đổi trong kho lưu trữ.
  • NEW_ITEM: Mặt hàng chưa được lập chỉ mục.
  • ACCEPTED: Mục này đã đượ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, những mục đã nằm trong hàng đợi lâu nhất sẽ được ưu tiên hơn.

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 cách sử dụng hàng đợi lập chỉ mục. Các bước này phản ánh các lệnh gọi REST API; để biết các lệnh gọi tương đương của SDK, hãy xem Các 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 lệnh đẩy type hoặc contentHash, thì Cloud Search sẽ xác định trạng thái.
    • Các mặt hàng không xác định sẽ có trạng thái NEW_ITEM.
    • Các mục hiện có có hàm băm trùng khớp sẽ giữ nguyên 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 những mục 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 các yêu cầu API 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ặt hàng sẽ chuyển sang trạng thái ACCEPTED sau khi được xử lý thành công.

Xóa mục

Chiến lược duyệt qua 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 qua 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ặt hàng đều 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 truyền tải đầy đủ 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 trùng khớp sẽ thay đổi nhãn thành "B" và vẫn giữ nguyên ACCEPTED.
    • Các mặt hàng 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 đã đượ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 pushItems để đẩy các mục. 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.

Các thao tác với hàng đợi (API REST)

Bạn cũng có thể 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 sẽ thêm mã nhận dạng vào hàng đợi. type sẽ xác định kết quả. Khi bạn đẩy một mã nhận dạng mới, hệ thống 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ò ý kiến sẽ được đặt trước và không thể được trả về bằng các lệnh gọi thăm dò ý kiến 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ỷ đặt trước các mục nhập.

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 truyền dữ liệu. Cloud Search so sánh các giá trị này với các giá trị được lưu trữ. Nếu không khớp, mục nhập 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 nhập đượ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 được huỷ dành riêng bằng cách sử dụng Items.push.