Connector SDK dan Google Cloud Search API memungkinkan pembuatan Cloud Search Indexing Queues yang digunakan untuk melakukan tugas berikut:
Mempertahankan status tiap dokumen (status, nilai hash, dan sebagainya) yang dapat digunakan untuk tetap menyinkronkan indeks dengan repositori Anda.
Mempertahankan daftar item yang akan diindeks sebagai ditemukan selama proses traversal.
Memprioritaskan item dalam antrean berdasarkan status item.
Mempertahankan informasi status tambahan untuk menciptakan integrasi yang efisien seperti checkpoint, token perubahan, dan lainnya.
Antrean adalah label yang ditetapkan ke item yang diindeks, seperti "default" untuk antrean default atau "B" untuk antrean B.
Status & prioritas
Prioritas dokumen dalam antrean didasarkan pada
ItemStatus
pada kode sumber. Berikut ini adalah kemungkinan
ItemStatus
kode sesuai urutan prioritas (ditangani terlebih dahulu hingga ditangani terakhir):
ERROR
- Item mengalami error asinkron selama proses pengindeksan dan perlu diindeks ulang.MODIFIED
- Item yang sebelumnya diindeks dan telah diubah di repositori sejak pengindeksan terakhir.NEW_ITEM
- Item yang tidak diindeks.ACCEPTED
- Dokumen yang sebelumnya diindeks dan tidak berubah di repositori sejak pengindeksan terakhir.
Jika dua item dalam antrean memiliki status yang sama, prioritas lebih tinggi diberikan untuk item yang telah berada dalam antrean untuk jangka waktu paling lama.
Ringkasan penggunaan antrean pengindeksan untuk mengindeks item baru atau yang diubah
Gambar 1 menunjukkan langkah-langkah dalam mengindeks item baru atau yang diubah menggunakan pengindeksan antrean. Langkah-langkah ini menunjukkan panggilan REST API. Untuk panggilan SDK yang setara, lihat Operasi antrean (SDK Konektor).
Konektor konten menggunakan
items.push
untuk mendorong item (metadata dan hash) ke antrean pengindeksan untuk menetapkan status (MODIFIED
,NEW_ITEM
,DELETED
). Khususnya:- Saat mendorong, konektor secara eksplisit menyertakan kode push
type
ataucontentHash
. - Jika konektor tidak menyertakan
type
, Cloud Search otomatis menggunakancontentHash
untuk menentukan status item. - Jika item tidak diketahui, status item akan ditetapkan ke
NEW_ITEM
. - Jika item ada dan nilai hash cocok, status akan dipertahankan sebagai
ACCEPTED
. - Jika item ada dan hash-nya berbeda, statusnya akan menjadi
MODIFIED
.
Untuk informasi selengkapnya tentang cara status item ditetapkan, lihat Melintasi repositori GitHub kode contoh di Tutorial memulai Cloud Search.
Biasanya, push dikaitkan dengan traversal konten dan/atau deteksi perubahan proses di konektor.
- Saat mendorong, konektor secara eksplisit menyertakan kode push
Konektor konten menggunakan
items.poll
untuk melakukan polling pada antrean guna menentukan item yang akan diindeks. Cloud Search memberi tahu konektor item yang paling membutuhkan pengindeksan, diurutkan terlebih dahulu berdasarkan kode status, oleh waktu dalam antrean.Konektor mengambil item ini dari repositori dan membangun indeks terhadap permintaan API.
Konektor menggunakan
items.index
untuk mengindeks item. Item hanya memasuki statusACCEPTED
setelah Cloud Search berhasil menyelesaikan pemrosesan item.
Konektor juga dapat menghapus item jika sudah tidak ada di repositori, atau mendorong item lagi jika tidak diubah atau jika ada error repositori sumber. Untuk informasi tentang penghapusan item, lihat referensi bagian.
Ringkasan penggunaan antrean pengindeksan untuk menghapus item
Tujuan strategi full-traversal menggunakan proses dua antrean untuk mengindeks item dan mendeteksi penghapusan. Gambar 2 menunjukkan langkah-langkah dalam menghapus item menggunakan dua antrean pengindeksan. Secara khusus, Gambar 2 menunjukkan traversal kedua yang dilakukan menggunakan strategi {i>full-traversal<i}. Langkah-langkah ini menggunakan panggilan REST API. Sebagai yang setara dengan panggilan SDK, lihat Operasi antrean (SDK Konektor).
Pada traversal awal, konektor konten menggunakan
items.push
untuk mendorong item (metadata dan hash) ke antrean pengindeksan, "antrean A" sebagaiNEW_ITEM
karena tidak ada dalam antrean. Setiap item diberi label "A" untuk "antrean A". Konten diindeks ke Cloud Search.Konektor konten menggunakan
items.poll
ke antrean A untuk menentukan item yang akan diindeks. Cloud Search memberi tahu konektor item yang paling membutuhkan pengindeksan, diurutkan terlebih dahulu berdasarkan kode status, oleh waktu dalam antrean.Konektor mengambil item ini dari repositori dan membangun indeks terhadap permintaan API.
Konektor menggunakan
items.index
untuk mengindeks item. Item hanya memasuki statusACCEPTED
setelah Cloud Search berhasil menyelesaikan pemrosesan item.Tujuan
deleteQueueItems
dipanggil pada "antrean B". Namun, tidak ada item yang didorong ke antrean B, jadi tidak ada yang dapat dihapus.Pada traversal penuh kedua, konektor konten menggunakan
items.push
untuk mendorong item (metadata dan hash) ke antrean B:- Saat mendorong, konektor secara eksplisit menyertakan kode push
type
ataucontentHash
. - Jika konektor tidak menyertakan
type
, Cloud Search otomatis menggunakancontentHash
untuk menentukan status item. - Jika item tidak diketahui, status item akan disetel ke
NEW_ITEM
dan antrean label diubah menjadi "B". - Jika item ada dan nilai hash cocok, status akan dipertahankan sebagai
ACCEPTED
dan label antrean diubah menjadi "B." - Jika item ada dan hash-nya berbeda, statusnya akan menjadi
MODIFIED
dan antrean label diubah menjadi "B".
- Saat mendorong, konektor secara eksplisit menyertakan kode push
Konektor konten menggunakan
items.poll
untuk melakukan polling pada antrean guna menentukan item yang akan diindeks. Cloud Search memberi tahu konektor item yang paling membutuhkan pengindeksan, diurutkan terlebih dahulu berdasarkan kode status, oleh waktu dalam antrean.Konektor mengambil item ini dari repositori dan membangun indeks terhadap permintaan API.
Konektor menggunakan
items.index
untuk mengindeks item. Item hanya memasuki statusACCEPTED
setelah Cloud Search berhasil menyelesaikan pemrosesan item.Terakhir,
deleteQueueItems
dipanggil pada antrean A untuk menghapus semua item CCloud Search yang diindeks sebelumnya yang masih memiliki antrean "A" label.Dengan traversal penuh berikutnya, antrean yang digunakan untuk pengindeksan dan antrian yang digunakan untuk menghapus akan ditukar.
Operasi antrean (SDK Konektor)
SDK Konektor Konten menyediakan operasi untuk mendorong item ke dan menarik item dari antrean.
Untuk mengemas dan memasukkan item ke antrean, gunakan pushItems
builder.
Anda tidak perlu melakukan hal khusus untuk memproses penarikan item dari antrean. Sebagai gantinya, SDK secara otomatis menarik item dari antrean, dengan prioritas
pesanan, menggunakan
Class Repository
getDoc
.
Operasi antrean (REST API)
REST API menyediakan dua metode berikut untuk mendorong item ke dan menarik item dari antrean:
- Untuk memasukkan item ke antrean, gunakan
Items.push
. - Untuk menarik item dalam antrean, gunakan
Items.poll
.
Anda juga dapat menggunakan
Items.index
untuk mendorong item ke antrean selama pengindeksan. Item didorong ke antrean selama
pengindeksan tidak memerlukan
type
dan secara otomatis
diberi status
ACCEPTED
.
Items.push
Tujuan
Items.push
ini menambahkan ID ke antrean. Metode ini dapat dipanggil dengan
type
yang menentukan hasil operasi dorong. Untuk mengetahui daftar nilai type
, lihat
ke
Kolom item.type
di Items.push
.
Mendorong ID baru menghasilkan penambahan entri baru dengan NEW_ITEM
ItemStatus
pada kode sumber.
Payload opsional selalu disimpan, diperlakukan sebagai nilai buram, dan ditampilkan
dari
Items.poll
Saat item di-polling, item tersebut dicadangkan berarti item tidak dapat ditampilkan oleh
telepon lain ke
Items.poll
Menggunakan
Items.push
dengan
type
sebagai NOT_MODIFIED
, REPOSITORY_ERROR
, atau REQUEUE
, unreserves
entri yang dipolling. Untuk informasi lebih lanjut tentang
entri yang direservasi dan tidak direservasi,
lihat bagian Items.poll.
Items.push
dengan hash
Google Cloud Search API mendukung penentuan nilai hash konten dan metadata
aktif
Items.index
permintaan. Daripada menetapkan
type
,
metadata dan/atau nilai hash konten
yang dapat ditentukan dengan permintaan push. Cloud Search Indexing Queue membandingkan
nilai hash yang diberikan dengan nilai tersimpan yang tersedia dengan item di
sumber data. Jika tidak cocok, entri tersebut akan ditandai sebagai MODIFIED
. Jika model
item tidak ada dalam indeks, maka statusnya adalah NEW_ITEM
.
Items.poll
Metode Items.poll mengambil entri dengan prioritas tertinggi dari antrean. Permintaan dan nilai status yang dikembalikan menunjukkan status antrean prioritas yang diminta atau status ID yang dikembalikan.
Secara default, entri dari setiap bagian antrean dapat ditampilkan berdasarkan prioritasnya. Setiap entri yang dikembalikan dicadangkan, dan tidak ditampilkan oleh entri lain
panggilan ke
Items.poll
hingga salah satu kasus berikut terpenuhi:
- Waktu reservasi habis.
- Entri tersebut akan diantrekan lagi oleh
Items.index
. Items.push
dipanggil dengantype
nilaiNOT_MODIFIED
,REPOSITORY_ERROR
, atauREQUEUE
.