Connector SDK ve Google Cloud Search API, aşağıdaki görevleri gerçekleştirmek için kullanılan Cloud Search dizine ekleme kuyruklarının oluşturulmasına olanak tanır:
Dizininizi deponuzla senkronize tutmak için kullanılabilecek belge başına durumu (durum, karma değerleri vb.) koruyun.
Geçiş işlemi sırasında keşfedilen ve dizine eklenecek öğelerin listesini tutar.
Kuyruklardaki öğeleri öğe durumuna göre önceliklendirin.
Kontrol noktaları ve değişiklik jetonu gibi verimli entegrasyon için ek durum bilgilerini koruyun.
Kuyruk, dizine eklenmiş bir öğeye atanan etikettir. Örneğin, varsayılan kuyruk için "varsayılan" veya B kuyruğu için "B".
Durum ve öncelik
Bir belgenin kuyruktaki önceliği, ItemStatus
koduna göre belirlenir. Aşağıda, öncelik sırasına göre (önce işlenenden en son işlenene doğru) olası ItemStatus
kodları verilmiştir:
ERROR
- Öğe, dizine ekleme işlemi sırasında eşzamansız hatayla karşılaştı ve yeniden dizine eklenmesi gerekiyor.MODIFIED
- Daha önce dizine eklenmiş ve son dizine ekleme işleminden bu yana depoda değiştirilmiş öğe.NEW_ITEM
: Dizine eklenmemiş öğe.ACCEPTED
- Daha önce dizine eklenmiş ve son dizine ekleme işleminden bu yana depoda değişmemiş doküman.
Bir kuyruktaki iki öğenin durumu aynı olduğunda, kuyrukta en uzun süredir bulunan öğelere daha yüksek öncelik verilir.
Yeni veya değiştirilmiş bir öğeyi dizine eklemek için dizine ekleme sıralarını kullanmaya genel bakış
Şekil 1'de, bir dizine ekleme sırası kullanılarak yeni veya değiştirilmiş bir öğenin dizine eklenmesiyle ilgili adımlar gösterilmektedir. Bu adımlarda REST API çağrıları gösterilmektedir. Eşdeğer SDK çağrıları için Kuyruk işlemleri (Connector SDK) bölümüne bakın.

İçerik bağlayıcı, öğelerin durumunu (
MODIFIED
,NEW_ITEM
,DELETED
) belirlemek için öğeleri (meta veri ve karma) bir dizine ekleme sırasına göndermek üzereitems.push
kullanır. Özellikle:- Bağlayıcı, verileri gönderirken açıkça bir gönderme
type
veyacontentHash
içerir. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
kullanır. - Öğe bilinmiyorsa öğe durumu
NEW_ITEM
olarak ayarlanır. - Öğe varsa ve karma değerleri eşleşiyorsa durum
ACCEPTED
olarak kalır. - Öğe varsa ve karma değerleri farklıysa durum
MODIFIED
olur.
Öğe durumunun nasıl belirlendiği hakkında daha fazla bilgi için Cloud Search'ü kullanmaya başlama eğitimindeki GitHub depolarında gezinme örnek koduna bakın.
Genellikle push işlemi, bağlayıcıdaki içerik geçişi ve/veya değişiklik algılama süreçleriyle ilişkilendirilir.
- Bağlayıcı, verileri gönderirken açıkça bir gönderme
İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için kuyruğu yoklamak üzere
items.poll
kullanır. Cloud Search, bağlayıcıya hangi öğelerin dizine eklenmeye en çok ihtiyacı olduğunu söyler. Öğeler önce durum koduna, ardından da kuyrukta bekleme süresine göre sıralanır.Bağlayıcı, bu öğeleri depodan alır ve dizin API istekleri oluşturur.
Bağlayıcı, öğeleri dizine eklemek için
items.index
kullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonraACCEPTED
durumuna girer.
Bağlayıcı, öğe depoda artık mevcut değilse silebilir veya değiştirilmemişse ya da kaynak deposu hatası varsa öğeyi tekrar gönderebilir. Öğe silme hakkında bilgi için sonraki bölüme bakın.
Öğeleri silmek için dizine ekleme kuyruklarını kullanmaya genel bakış
Tam geçiş stratejisi, öğeleri dizine eklemek ve silme işlemlerini algılamak için iki kuyruklu bir süreç kullanır. Şekil 2'de, iki dizine ekleme sırası kullanılarak bir öğenin silinmesiyle ilgili adımlar gösterilmektedir. Özellikle Şekil 2, tam geçiş stratejisi kullanılarak gerçekleştirilen ikinci geçişi gösterir. Bu adımlarda REST API çağrıları kullanılır. Eşdeğer SDK çağrıları için Kuyruk işlemleri (Connector SDK) bölümüne bakın.

İlk geçişte içerik bağlayıcı, öğeleri (meta veriler ve karma) bir dizine ekleme sırasına göndermek için
items.push
kullanır. Bu öğeler, sırada bulunmadıkları içinNEW_ITEM
olarak "A sırası"na gönderilir. Her öğeye "A sırası" için "A" etiketi atanır. İçerik, Cloud Search'te dizine eklenir.İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için A sırasını yoklamak üzere
items.poll
kullanır. Cloud Search, bağlayıcıya hangi öğelerin dizine eklenmeye en çok ihtiyacı olduğunu söyler. Öğeler önce durum koduna, ardından da kuyrukta bekleme süresine göre sıralanır.Bağlayıcı, bu öğeleri depodan alır ve dizin API istekleri oluşturur.
Bağlayıcı, öğeleri dizine eklemek için
items.index
kullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonraACCEPTED
durumuna girer.deleteQueueItems
yöntemi "B sırası" üzerinde çağrılır. Ancak B sırasına hiçbir öğe gönderilmediği için hiçbir şey silinemez.İkinci tam geçişte, içerik bağlayıcı, öğeleri (meta veriler ve karma) B sırasına göndermek için
items.push
kullanır:- Bağlayıcı, verileri gönderirken açıkça bir gönderme
type
veyacontentHash
içerir. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
kullanır. - Öğe bilinmiyorsa öğe durumu
NEW_ITEM
olarak ayarlanır ve sıra etiketi "B" olarak değiştirilir. - Öğe varsa ve karma değerleri eşleşiyorsa durum
ACCEPTED
olarak kalır ve kuyruk etiketi "B" olarak değiştirilir. - Öğe varsa ve karmalar farklıysa durum
MODIFIED
olur ve sıra etiketi "B" olarak değiştirilir.
- Bağlayıcı, verileri gönderirken açıkça bir gönderme
İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için kuyruğu yoklamak üzere
items.poll
kullanır. Cloud Search, bağlayıcıya hangi öğelerin dizine eklenmeye en çok ihtiyacı olduğunu söyler. Öğeler önce durum koduna, ardından da kuyrukta bekleme süresine göre sıralanır.Bağlayıcı, bu öğeleri depodan alır ve dizin API istekleri oluşturur.
Bağlayıcı, öğeleri dizine eklemek için
items.index
kullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonraACCEPTED
durumuna girer.Son olarak,
deleteQueueItems
önceden dizine eklenmiş ve hâlâ "A" etiketine sahip olan tüm CCloud Search öğelerini silmek için A kuyruğunda çağrılır.Sonraki tam geçişlerde, dizine ekleme için kullanılan sıra ile silme için kullanılan sıra yer değiştirir.
Kuyruk işlemleri (Connector SDK)
İçerik Bağlayıcı SDK'sı, öğeleri bir sıraya gönderme ve sıradan çekme işlemleri sağlar.
Bir öğeyi paketleyip sıraya göndermek için pushItems
oluşturucu sınıfını kullanın.
Öğeleri işlenmek üzere bir kuyruktan çekmek için herhangi bir işlem yapmanız gerekmez. Bunun yerine, SDK, Repository sınıfının getDoc
yöntemini kullanarak öğeleri sıraya göre otomatik olarak çeker.
Sıra işlemleri (REST API)
REST API, öğeleri bir kuyruğa göndermek ve kuyruktan çekmek için aşağıdaki iki yöntemi sağlar:
- Bir öğeyi sıraya göndermek için
Items.push
simgesini kullanın. - Kuyruktaki öğeleri yoklamak için
Items.poll
kullanın.
Öğeleri dizine ekleme sırasında sıraya göndermek için Items.index
öğesini de kullanabilirsiniz. Dizin oluşturma sırasında sıraya gönderilen öğeler için type
gerekmez ve bu öğelere otomatik olarak ACCEPTED
durumu atanır.
Items.push
Items.push
yöntemi, sıraya kimlik ekler. Bu yöntem, push işleminin sonucunu belirleyen belirli bir type
değeriyle çağrılabilir. type
değerlerinin listesi için Items.push yöntemindeki item.type
alanına bakın.
Yeni bir kimlik göndermek, NEW_ITEM
ItemStatus
kodu içeren yeni bir girişin eklenmesine neden olur.
İsteğe bağlı yük her zaman depolanır, opak değer olarak kabul edilir ve Items.poll
'den döndürülür.
Bir öğe yoklandığında ayrılmış olur. Yani Items.poll
başka bir çağrıyla döndürülemez.
Items.push
ile
type
NOT_MODIFIED
, REPOSITORY_ERROR
veya REQUEUE
olarak kullanıldığında, ankete katılan girişlerin rezervasyonu kaldırılır. Ayrılmış ve ayrılmamış girişler hakkında daha fazla bilgi için Items.poll bölümüne bakın.
Items.push
karma değerleriyle
Google Cloud Search API, Items.index
isteklerinde meta veri ve içerik karması değerlerinin belirtilmesini destekler. type
belirtmek yerine, meta veri ve/veya içerik karma değerleri bir push isteğiyle belirtilebilir. Cloud Search dizine ekleme sırası, sağlanan karma değerlerini veri kaynağındaki öğeyle birlikte kullanılabilen depolanmış değerlerle karşılaştırır. Eşleşmezse bu giriş MODIFIED
olarak işaretlenir. Dizinde karşılık gelen bir öğe yoksa durum NEW_ITEM
olur.
Items.poll
Items.poll yöntemi, kuyruktaki en yüksek öncelikli girişleri alır. İstenen ve döndürülen durum değerleri, istenen öncelikli kuyrukların durumlarını veya döndürülen kimliklerin durumunu gösterir.
Varsayılan olarak, önceliğe bağlı olarak kuyruğun herhangi bir bölümündeki girişler döndürülebilir. Döndürülen her giriş ayrılır ve aşağıdaki durumlardan biri karşılanana kadar Items.poll
için diğer çağrılar tarafından döndürülmez:
- Rezervasyon zaman aşımına uğrar.
- Giriş,
Items.index
tarafından tekrar sıraya alınır. Items.push
type
değeriNOT_MODIFIED
,REPOSITORY_ERROR
veyaREQUEUE
olarak çağrılıyor.