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:
Dizininizin deponuzla senkronize kalmasını sağlamak 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, önceliğe göre olası ItemStatus kodları (önce işlenenden en son işlenene doğru) 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.pushkullanır. Özellikle:- Bağlayıcı, verileri gönderirken açıkça bir push
typeveyacontentHashiçerir. - Bağlayıcı
typeiçermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHashkullanır. - Öğe bilinmiyorsa öğe durumu
NEW_ITEMolarak ayarlanır. - Öğe varsa ve karma değerleri eşleşiyorsa durum
ACCEPTEDolarak kalır. - Öğe varsa ve karma değerleri farklıysa durum
MODIFIEDolur.
Öğ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 push
İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için kuyruğu yoklamak üzere
items.pollkullanı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.indexkullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonraACCEPTEDdurumuna girer.
Bağlayıcı, öğe depoda artık mevcut değilse silebilir veya değiştirilmemişse ya da kaynak depo 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.pushkullanır. Bu öğeler, sırada bulunmadığı içinNEW_ITEMolarak "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.pollkullanı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.indexkullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonraACCEPTEDdurumuna girer.deleteQueueItemsyö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.pushkullanır:- Bağlayıcı, verileri gönderirken açıkça bir push
typeveyacontentHashiçerir. - Bağlayıcı
typeiçermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHashkullanır. - Öğe bilinmiyorsa öğe durumu
NEW_ITEMolarak ayarlanır ve sıra etiketi "B" olarak değiştirilir. - Öğe varsa ve karma değerleri eşleşiyorsa durum
ACCEPTEDolarak kalır ve kuyruk etiketi "B" olarak değiştirilir. - Öğe varsa ve karma değerleri farklıysa durum
MODIFIEDolur ve sıra etiketi "B" olarak değiştirilir.
- Bağlayıcı, verileri gönderirken açıkça bir push
İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için kuyruğu yoklamak üzere
items.pollkullanı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.indexkullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonraACCEPTEDdurumuna girer.Son olarak,
deleteQueueItemsdaha önce 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 özel 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 sıraya göndermek ve sıradan çekmek için aşağıdaki iki yöntemi sağlar:
- Bir öğeyi sıraya göndermek için
Items.pushsimgesini kullanın. - Kuyruktaki öğeleri yoklamak için
Items.pollkullanı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ş 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şmiyorsa 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.indextarafından tekrar sıraya alınır. Items.pushtypedeğeriNOT_MODIFIED,REPOSITORY_ERRORveyaREQUEUEolarak çağrılıyor.