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

SDK Trình kết nối và API Google Cloud Search cho phép tạo Cloud Search Hàng đợi lập chỉ mục dùng để thực hiện các tác vụ sau:

  • Duy trì trạng thái của mỗi tài liệu (trạng thái, giá trị hàm băm, v.v.) vì những trạng thái này có thể được dùng để giúp chỉ mục của bạn luôn đồng bộ với kho lưu trữ.

  • Duy trì danh sách các mục để được lập chỉ mục như được tìm thấy trong quá trình truyền tải của chúng tôi.

  • Ưu tiên các mục trong hàng đợi dựa trên trạng thái của mục.

  • Duy trì thông tin bổ sung về trạng thái để tích hợp hiệu quả, chẳng hạn như điểm kiểm tra, mã thay đổi, v.v.

Hàng đợi là nhãn được gán cho một mục được lập chỉ mục, chẳng hạn như "mặc định" cho hàng đợi mặc định hoặc "B" cho hàng đợi B.

Trạng thái và mức độ ưu tiên

Mức độ ưu tiên của tài liệu trong hàng đợi dựa trên ItemStatus . Sau đây là những cách ItemStatus mã theo thứ tự ưu tiên (xử lý trước đến xử lý sau cùng):

  • ERROR – Mục đã gặp lỗi không đồng bộ trong quá trình lập chỉ mục và cần được lập chỉ mục lại.

  • MODIFIED – Mục đã được lập chỉ mục trước đây và sau đó đã được sửa đổi trong kho lưu trữ kể từ lần lập chỉ mục gần đây nhất.

  • NEW_ITEM – Mục chưa được lập chỉ mục.

  • ACCEPTED – Tài liệu đã được lập chỉ mục trước đó và chưa thay đổi trong kho lưu trữ kể từ lần lập chỉ mục gần đây nhất.

Khi hai mục trong hàng đợi có cùng trạng thái, mức độ ưu tiên cao hơn được cấp cho các mục đã ở trong hàng đợi trong khoảng thời gian dài nhất.

Tổng quan về việc sử dụng hàng đợi lập chỉ mục để lập chỉ mục một mục mới hoặc một mục đã thay đổi

Hình 1 thể hiện các bước lập chỉ mục một mục mới hoặc một mục đã thay đổi bằng một hàng đợi. Các bước này cho thấy các lệnh gọi API REST. Đối với các lệnh gọi SDK tương đương, hãy tham khảo Thao tác hàng đợi (SDK trình kết nối).

Tổng quan về việc lập chỉ mục trong Google 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 các mặt hàng (siêu dữ liệu và hàm băm) vào hàng đợi lập chỉ mục nhằm thiết lập trạng thái (MODIFIED, NEW_ITEM, DELETED). Cụ thể:

    • Khi đẩy, trình kết nối bao gồm một cách rõ ràng là một lực đẩy type hoặc contentHash.
    • Nếu trình kết nối không bao gồm type thì Cloud Search tự động sử dụng contentHash để xác định trạng thái của mục.
    • Nếu mục không xác định, trạng thái của mục sẽ được đặt thành NEW_ITEM.
    • Nếu mục này tồn tại và các giá trị băm khớp với nhau, trạng thái sẽ là ACCEPTED.
    • Nếu mục đó tồn tại và các hàm băm khác nhau, trạng thái sẽ trở thành MODIFIED.

    Để biết thêm thông tin về cách thiết lập trạng thái mặt hàng, hãy tham khảo Truyền tải các kho lưu trữ GitHub mã mẫu trong Hướng dẫn bắt đầu sử dụng Cloud Search.

    Thông thường, việc đẩy có liên quan đến việc phát hiện thay đổi và/hoặc truyền tải nội dung trong trình kết nối.

  2. Trình kết nối nội dung sử dụng items.poll để thăm dò hàng đợi nhằm xác định các mục cần lập chỉ mục. Cloud Search cho trình kết nối biết mục nào cần được lập chỉ mục nhất, được sắp xếp trước tiên theo mã trạng thái sau đó theo thời gian trong hàng đợi.

  3. Trình kết nối truy xuất các mục này từ kho lưu trữ và tạo chỉ mục Yêu cầu API.

  4. Trình kết nối sử dụng items.index để lập chỉ mục các mục. Mục này chỉ chuyển sang trạng thái ACCEPTED sau khi Cloud Search đã xử lý xong mục hàng.

Một trình kết nối cũng có thể xoá một mục nếu một mục không còn tồn tại trong kho lưu trữ. hoặc đẩy lại một mục nếu mục đó chưa được sửa đổi hoặc nếu có lỗi kho lưu trữ nguồn. Để biết thông tin về việc xoá mục, hãy xem .

Tổng quan về việc sử dụng hàng đợi lập chỉ mục để xoá một mục

Chiến lược phát hành đĩa đơn chiến lược truyền tải toàn diện sử dụng quy trình hai hàng đợi để lập chỉ mục các mục và phát hiện thao tác xoá. Hình 2 minh hoạ các bước xoá một mục bằng cách sử dụng hàng đợi lập chỉ mục. Cụ thể, Hình 2 cho thấy lần truyền tải thứ hai được thực hiện bằng cách sử dụng chiến lược truyền tải toàn diện. Các bước này sử dụng lệnh gọi API REST. Cho lệnh gọi SDK tương đương, hãy tham khảo Thao tác hàng đợi (SDK trình kết nối).

Tổng quan về việc lập chỉ mục trong Google Cloud Search
Hình 2. Đang xoá các mục
  1. Trong lần truyền tải ban đầu, trình kết nối nội dung sử dụng items.push để đẩy các mục (siêu dữ liệu và hàm băm) vào hàng đợi lập chỉ mục, "hàng đợi A" dưới dạng NEW_ITEM vì không tồn tại trong hàng đợi. Mỗi mục được gán nhãn "A" cho "hàng đợi A". Nội dung được lập chỉ mục vào Cloud Search.

  2. Trình kết nối nội dung sử dụng items.poll vào hàng đợi thăm dò A để xác định các mục cần lập chỉ mục. Cloud Search cho trình kết nối biết mục nào cần được lập chỉ mục nhất, được sắp xếp trước tiên theo mã trạng thái sau đó theo thời gian trong hàng đợi.

  3. Trình kết nối truy xuất các mục này từ kho lưu trữ và tạo chỉ mục Yêu cầu API.

  4. Trình kết nối sử dụng items.index để lập chỉ mục các mục. Mục này chỉ chuyển sang trạng thái ACCEPTED sau khi Cloud Search đã xử lý xong mục hàng.

  5. Chiến lược phát hành đĩa đơn deleteQueueItems được gọi trên "hàng đợi B". Tuy nhiên, không có mục nào được đẩy vào hàng đợi B, vì vậy không xoá được.

  6. Trên lần truyền tải đầy đủ thứ hai, trình kết nối nội dung sử dụng items.push để đẩy các mục (siêu dữ liệu và hàm băm) vào hàng đợi B:

    • Khi đẩy, trình kết nối bao gồm một cách rõ ràng là một lực đẩy type hoặc contentHash.
    • Nếu trình kết nối không bao gồm type thì Cloud Search tự động sử dụng contentHash để xác định trạng thái của mục.
    • Nếu mục không xác định, trạng thái của mục sẽ được đặt thành NEW_ITEM và hàng đợi nhãn được thay đổi thành "B".
    • Nếu mục này tồn tại và các giá trị băm trùng khớp, trạng thái sẽ là ACCEPTED và nhãn của hàng đợi được thay đổi thành "B".
    • Nếu mục đó tồn tại và các hàm băm khác nhau, trạng thái sẽ trở thành MODIFIED và hàng đợi nhãn được thay đổi thành "B".
  7. Trình kết nối nội dung sử dụng items.poll để thăm dò hàng đợi nhằm xác định các mục cần lập chỉ mục. Cloud Search cho trình kết nối biết mục nào cần được lập chỉ mục nhất, được sắp xếp trước tiên theo mã trạng thái sau đó theo thời gian trong hàng đợi.

  8. Trình kết nối truy xuất các mục này từ kho lưu trữ và tạo chỉ mục Yêu cầu API.

  9. Trình kết nối sử dụng items.index để lập chỉ mục các mục. Mục này chỉ chuyển sang trạng thái ACCEPTED sau khi Cloud Search đã xử lý xong mục hàng.

  10. Cuối cùng, deleteQueueItems được gọi trong hàng đợi A để xoá tất cả các mục đã được lập chỉ mục trước đó trong CCloud Search vẫn có hàng đợi "A" .

  11. Với các lần truyền tải đầy đủ tiếp theo, hàng đợi được sử dụng để lập chỉ mục và hàng đợi dùng để xoá sẽ được hoán đổi.

Thao tác hàng đợi (SDK trình kết nối)

SDK Trình kết nối nội dung cung cấp các thao tác để đẩy các mục đến và kéo mục từ, một hàng đợi.

Để đóng gói và đẩy một mục vào hàng đợi, hãy sử dụng pushItems Builder (Trình tạo bản dựng).

Bạn không cần phải làm gì cụ thể để lấy các mục từ hàng đợi cho đang xử lý. Thay vào đó, SDK sẽ tự động lấy các mục từ hàng đợi theo mức độ ưu tiên theo đơn đặt hàng, bằng cách sử dụng Lớp Kho lưu trữ getDoc .

Thao tác hàng đợi (API REST)

API REST cung cấp 2 phương thức sau để đẩy các mục đến và đang lấy các mục từ hàng đợi:

  • Để đẩy một mục vào hàng đợi, hãy sử dụng Items.push.
  • Để thăm dò ý kiến các mục trong hàng đợi, hãy sử dụng Items.poll.

Bạn cũng có thể sử dụng Items.index để đẩy các mục vào hàng đợi trong quá trình lập chỉ mục. Các mục được đẩy vào hàng đợi trong khoảng thời gian không đòi hỏi type và tự động được gán trạng thái ACCEPTED.

Items.push

Chiến lược phát hành đĩa đơn Items.push sẽ thêm mã nhận dạng vào hàng đợi. Phương thức này có thể được gọi bằng một type giá trị xác định kết quả của thao tác đẩy. Để xem danh sách các giá trị type, hãy tham khảo vào item.type trong trường Items.push .

Việc đẩy mã nhận dạng mới dẫn đến việc thêm một mục nhập mới có NEW_ITEM ItemStatus .

Tải trọng không bắt buộc luôn được lưu trữ, xem như một giá trị không rõ ràng và trả về từ Items.poll.

Khi một mục được thăm dò, mục đó sẽ được dành riêng, nghĩa là không thể trả về mục này một cuộc gọi khác tới Items.poll. Sử dụng Items.push thông qua tính năng type dưới dạng NOT_MODIFIED, REPOSITORY_ERROR hoặc REQUEUE, huỷ đặt trước các mục được thăm dò ý kiến. Để biết thêm thông tin về các mục nhập đặt trước và chưa đặt trước, hãy tham khảo mục Items.poll.

Items.push có hàm băm

Google Cloud Search API hỗ trợ việc chỉ định siêu dữ liệu và các giá trị hàm băm nội dung về Items.index yêu cầu. Thay vì chỉ định type! các giá trị hàm băm nội dung và/hoặc siêu dữ liệu có thể được chỉ định bằng yêu cầu đẩy. So sánh hàng đợi lập chỉ mục của Cloud Search các giá trị băm được cung cấp cùng với các giá trị được lưu trữ có sẵn cho mục trong nguồn dữ liệu. Nếu không khớp, mục nhập đó sẽ được đánh dấu là MODIFIED. Nếu một mục không tồn tại trong chỉ mục, thì trạng thái là NEW_ITEM.

Items.poll

Items.poll phương thức này truy xuất các mục có mức độ ưu tiên cao nhất từ hàng đợi. Cụm từ được yêu cầu và giá trị trạng thái được trả về cho biết(các) trạng thái của (các) hàng đợi ưu tiên đã yêu cầu hoặc trạng thái của mã nhận dạng được trả về.

Theo mặc định, các mục nhập từ bất kỳ phần nào của hàng đợi có thể được trả về, dựa trên mức độ ưu tiên. Mỗi mục nhập trả về đều được dành riêng và không được người khác trả về cuộc gọi đến Items.poll cho đến khi gặp một trong các trường hợp sau:

  • Yêu cầu đặt chỗ đã hết thời gian.
  • Mục nhập này lại được Items.index thêm vào hàng đợi.
  • Items.push được gọi bằng type có giá trị NOT_MODIFIED, REPOSITORY_ERROR hoặc REQUEUE.