Connector SDK ve Google Cloud Search API, aşağıdaki görevleri gerçekleştirmek için kullanılan Cloud Search dizine ekleme sıraları oluşturmanıza olanak tanır:
Dizininizi deponuzla senkronize tutmak için kullanılabilecek doküman başına durumu (durum, karma oluşturma değerleri vb.) koruyun.
Tarama işlemi sırasında keşfedilen ve dizine eklenecek öğelerin listesini tutar.
Öğe durumuna göre sıraya eklenen öğelere öncelik verin.
Etkili entegrasyon için kontrol noktaları, değişiklik jetonu vb. gibi ek durum bilgilerini koruma
Sıra, dizine eklenen bir öğeye atanan bir etikettir (ör. varsayılan sıra için "varsayılan" veya B sırası için "B").
Durum ve öncelik
Bir dokümanın sıradaki önceliği, ItemStatus
kodundan belirlenir. Aşağıda, öncelik sırasına göre (ilk önce ele alınandan en son ele alınana kadar) 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 eklenen ve son dizine ekleme işleminden bu yana depolama alanında değiştirilen öğ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 sıradaki iki öğenin durumu aynı olduğunda, sırada 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, dizine ekleme sırası kullanılarak yeni veya değiştirilmiş bir öğenin dizine eklenmesindeki adımlar gösterilmektedir. Bu adımlarda REST API çağrıları gösterilmektedir. Eşdeğer SDK çağrıları için Sıralama işlemleri (Bağlantı SDK'sı) başlıklı makaleyi inceleyin.
İçerik bağlayıcı, öğenin durumunu (
MODIFIED
,NEW_ITEM
,DELETED
) belirlemek için öğeleri (meta veriler ve karma oluşturma) dizine ekleme sırasına göndermek üzereitems.push
kullanır. Daha ayrıntılı olarak:- Bağlantılayıcı, veri gönderirken açıkça bir push
type
veyacontentHash
içerir. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
değerini kullanır. - Öğe bilinmiyorsa öğe durumu
NEW_ITEM
olarak ayarlanır. - Öğe varsa ve karma oluşturma değerleri eşleşirse durum
ACCEPTED
olarak korunur. - Öğe mevcutsa ve karma oluşturma işlemleri farklıysa durum
MODIFIED
olur.
Öğe durumunun nasıl belirlendiği hakkında daha fazla bilgi için Cloud Search başlangıç eğitimi'ndeki GitHub depolarını gezme örnek koduna bakın.
Genellikle, itme işlemi, bağlayıcıdaki içerik geçişi ve/veya değişiklik algılama süreçleriyle ilişkilendirilir.
- Bağlantılayıcı, veri gönderirken açıkça bir push
İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için sırayı sorgulamak üzere
items.poll
kullanır. Cloud Search, bağlayıcıya öncelikle durum koduna, ardından da sıraya eklenme süresine göre sıralanmış, dizine eklenmeye en çok ihtiyaç duyulan öğeleri bildirir.Bağlantılayıcı, bu öğeleri depodan alır ve dizin API isteklerini 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ğlantılayıcı, artık depoda bulunmayan bir öğeyi silebilir veya değiştirilmemişse ya da kaynak depoda hata varsa öğeyi tekrar yayınlayabilir. Öğe silme hakkında bilgi edinmek için sonraki bölüme bakın.
Bir öğeyi silmek için dizine ekleme sıralarını kullanmaya genel bakış
Tam tarama stratejisi, öğeleri dizine eklemek ve silme işlemlerini tespit etmek için iki sıralı bir işlem kullanır. Şekil 2'de, iki dizine ekleme sırası kullanılarak bir öğenin silinmesiyle ilgili adımlar gösterilmektedir. Daha açık belirtmek gerekirse Şekil 2'de, tam tarama stratejisi kullanılarak yapılan ikinci tarama gösterilmektedir. Bu adımlarda REST API çağrıları kullanılır. Eşdeğer SDK çağrıları için Sıralama işlemleri (Bağlantı SDK'sı) bölümüne bakın.
İlk tarama sırasında içerik bağlayıcı, öğeleri (meta veriler ve karma oluşturma) dizine ekleme kuyusuna göndermek için
items.push
değerini kullanır. Bu kuyuda bulunmadığı içinNEW_ITEM
olarak "A kuyusu" kullanılır. Her öğeye "A kuyruğu" için "A" etiketi atanır. İçerik, Cloud Search'te dizine eklenir.İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için A kuyruğunu sorgulamak üzere
items.poll
kullanır. Cloud Search, bağlayıcıya öncelikle durum koduna, ardından da sırada bekleme süresine göre sıralanmış, dizine eklenmeye en çok ihtiyaç duyulan öğeleri bildirir.Bağlantılayıcı, bu öğeleri depodan alır ve dizin API isteklerini 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 kuyruğunda" çağrılır. Ancak B kuyruğuna öğe eklenmediğinden hiçbir şey silinemeyecektir.İçerik bağlayıcı, ikinci tam geçişte öğeleri (meta veriler ve karma oluşturma) B kuyruğuna göndermek için
items.push
kullanır:- Bağlantılayıcı, veri gönderirken açıkça bir push
type
veyacontentHash
içerir. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
değerini kullanır. - Öğe bilinmiyorsa öğe durumu
NEW_ITEM
olarak ayarlanır ve sıra etiketi "B" olarak değiştirilir. - Öğe mevcutsa ve karma değerleri eşleşirse durum
ACCEPTED
olarak korunur ve sıra etiketi "B" olarak değiştirilir. - Öğe mevcutsa ve karma oluşturma işlemleri farklıysa durum
MODIFIED
olur ve sıra etiketi "B" olarak değiştirilir.
- Bağlantılayıcı, veri gönderirken açıkça bir push
İçerik bağlayıcı, dizine eklenecek öğeleri belirlemek için sırayı sorgulamak üzere
items.poll
kullanır. Cloud Search, bağlayıcıya öncelikle durum koduna, ardından da sıraya eklenme süresine göre sıralanmış, dizine eklenmeye en çok ihtiyaç duyulan öğeleri bildirir.Bağlantılayıcı, bu öğeleri depodan alır ve dizin API isteklerini 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, "A" etiketine sahip olan ve daha önce dizine eklenen tüm CCloud Search öğelerini silmek için A sırasında
deleteQueueItems
çağrılır.Sonraki tam geçişlerde, dizine ekleme için kullanılan sıra ve silme için kullanılan sıra değiştirilir.
Sırada bekleme işlemleri (Connector SDK)
Content Connector SDK'sı, öğeleri bir sıraya ekleme ve sıradan öğe alma işlemleri sağlar.
Bir öğeyi paketlemek ve sıraya aktarmak için pushItems
derleyici sınıfını kullanın.
İşleme almak üzere öğeleri bir sıradan almak için özel bir işlem yapmanız gerekmez. Bunun yerine SDK, Repository sınıfının getDoc
yöntemini kullanarak öğeleri öncelik sırasına göre otomatik olarak kuyruktan alır.
Sıralı işlemler (REST API)
REST API, öğeleri bir sıraya eklemek ve sıradan almak için aşağıdaki iki yöntemi sağlar:
- Bir öğeyi sıraya eklemek için
Items.push
simgesini kullanın. - Sırada bekleyen öğeleri anketlemek için
Items.poll
simgesini kullanın.
Dizine ekleme sırasında öğeleri sıraya eklemek için Items.index
değerini de kullanabilirsiniz. Dizine ekleme sırasında sıraya eklenen öğeler için type
gerekmez ve otomatik olarak ACCEPTED
durumu atanır.
Items.push
Items.push
yöntemi, kimlikleri sıraya 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önderdiğinizde NEW_ITEM
ItemStatus
kodu içeren yeni bir giriş eklenir.
İsteğe bağlı yük her zaman depolanır, opak değer olarak kabul edilir ve Items.poll
kaynağından döndürülür.
Bir öğe ankete tabi tutulduğunda ayrılır. Bu, Items.poll
çağrısı yapılarak döndürülemez anlamına gelir.
NOT_MODIFIED
, REPOSITORY_ERROR
veya REQUEUE
olarak type
ile Items.push
kullanmak, ankete katılan girişlerin rezervasyonunu kaldırır. Ayrılmış ve ayrılmamış girişler hakkında daha fazla bilgi için Items.poll bölümüne bakın.
Karma oluşturma işlemi uygulanmış Items.push
Google Cloud Search API, Items.index
isteklerinde meta veri ve içerik karma değeri belirtmeyi destekler. type
yerine, meta veri ve/veya içerik karma değeri, bir push isteğiyle belirtilebilir. Cloud Search dizine ekleme sırası, sağlanan karma oluşturma değerlerini veri kaynağındaki öğeyle ilişkili depolanan değerlerle karşılaştırır. Eşleşmezse ilgili giriş MODIFIED
olarak işaretlenir. Dizininde ilgili bir öğe yoksa durum NEW_ITEM
olur.
Items.poll
Items.poll yöntemi, en yüksek öncelikli girişleri kuyruktan alır. İstenen ve döndürülen durum değerleri, istenen öncelikli sıraların durumlarını veya döndürülen kimliklerin durumlarını 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 diğer Items.poll
çağrıları tarafından döndürülmez:
- Rezervasyon zaman aşımına uğrar.
- Giriş,
Items.index
tarafından tekrar sıraya eklenir. Items.push
,NOT_MODIFIED
,REPOSITORY_ERROR
veyaREQUEUE
değerine sahip birtype
ile çağrılır.