Google Cloud Search Indexing Queues

SDK Konektor dan Cloud Search API mendukung pembuatan Cloud Search Indexing Queues. Gunakan antrean ini untuk:

  • Mempertahankan status per dokumen (status, hash, dll.) agar indeks Anda tetap disinkronkan.
  • Mempertahankan daftar item yang akan diindeks, seperti yang ditemukan selama traversal.
  • Memprioritaskan item berdasarkan statusnya.
  • Mempertahankan informasi status seperti checkpoint dan token perubahan.

Antrean adalah label yang ditetapkan ke item yang diindeks (misalnya, "default").

Status dan prioritas

Prioritas dokumen bergantung pada kode ItemStatus. Kemungkinan kode, berdasarkan urutan prioritas (tertinggi hingga terendah), adalah:

  • ERROR: Item mengalami error asinkron dan perlu diindeks ulang.
  • MODIFIED: Item sebelumnya diindeks, tetapi telah berubah di repositori.
  • NEW_ITEM: Item belum diindeks.
  • ACCEPTED: Item sebelumnya diindeks dan tidak berubah.

Untuk item dengan status yang sama, prioritas yang lebih tinggi diberikan kepada item yang telah berada dalam antrean paling lama.

Mengindeks item baru atau yang diubah

Gambar 1 menunjukkan langkah-langkah untuk mengindeks item baru atau yang diubah menggunakan antrean pengindeksan. Langkah-langkah ini mencerminkan panggilan REST API; untuk mengetahui kesamaan SDK, lihat Operasi antrean (SDK Konektor).

Ringkasan pengindeksan Cloud Search
Gambar 1. Langkah-langkah pengindeksan untuk menambahkan atau memperbarui item
  1. Konektor konten menggunakan items.push untuk mengirimkan metadata dan hash ke dalam antrean.
    • Jika konektor menyertakan type atau contentHash, Cloud Search akan menentukan statusnya.
    • Item yang tidak diketahui akan menerima status NEW_ITEM.
    • Item yang ada dengan hash yang cocok tetap ACCEPTED.
    • Item yang ada dengan hash yang berbeda akan menjadi MODIFIED.
  2. Konektor menggunakan items.poll untuk menentukan item mana yang akan diindeks. Cloud Search menampilkan item dalam urutan prioritas.
  3. Konektor mengambil item dari repositori dan membuat permintaan API indeks.
  4. Konektor menggunakan items.index untuk mengindeks item. Item memasuki status ACCEPTED setelah berhasil diproses.

Menghapus item

Strategi traversal penuh menggunakan dua antrean untuk mengindeks item dan mendeteksi penghapusan. Gambar 2 menunjukkan penelusuran kedua dalam strategi ini.

Ringkasan pengindeksan Cloud Search
Gambar 2. Menghapus item
  1. Pada traversal awal, konektor mendorong item ke "antrean A" sebagai NEW_ITEM. Setiap item menerima label "A".
  2. Konektor melakukan polling pada antrean A dan mengindeks item.
  3. Pada traversal penuh kedua, konektor akan mengirimkan item ke "antrean B".
    • Item yang tidak diketahui akan menerima label "B" dan status NEW_ITEM.
    • Item yang ada dengan hash yang cocok akan mengubah labelnya menjadi "B" dan tetap ACCEPTED.
    • Item yang ada dengan hash berbeda akan mengubah labelnya menjadi "B" dan menjadi MODIFIED.
  4. Konektor melakukan polling antrean B dan mengindeks item.
  5. Terakhir, konektor memanggil deleteQueueItems di antrean A. Perintah ini akan menghapus semua item yang diindeks sebelumnya yang masih memiliki label "A".
  6. Penelusuran berikutnya menukar peran kedua antrean.

Operasi antrean (SDK Konektor)

Gunakan pushItems builder untuk mendorong item. SDK otomatis menarik item dari antrean dalam urutan prioritas menggunakan metode getDoc class Repository.

Operasi antrean (REST API)

Anda juga dapat menggunakan Items.index untuk mendorong item selama pengindeksan. Item ini menerima status ACCEPTED secara otomatis.

Items.push

Metode ini menambahkan ID ke antrean. type menentukan hasilnya. Mendorong ID baru akan menambahkan entri dengan status NEW_ITEM. Payload opsional ditampilkan selama polling.

Item yang ditarik memiliki status dipesan dan tidak dapat ditampilkan oleh panggilan polling lainnya. Menggunakan Items.push dengan type yang ditetapkan ke NOT_MODIFIED, REPOSITORY_ERROR, atau REQUEUE membatalkan reservasi entri.

Items.push dengan hash

Tentukan hash metadata atau konten dalam permintaan push. Cloud Search membandingkan nilai ini dengan nilai yang disimpan. Jika tidak cocok, entri akan menjadi MODIFIED. ID yang tidak cocok dan tidak ada akan menjadi NEW_ITEM.

Items.poll

Metode ini mengambil entri prioritas tinggi. Setiap entri yang ditampilkan memiliki status dipesan hingga waktu habis, diindeks ulang, atau dibatalkan pemesanannya menggunakan Items.push.