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.
Geçiş işlemi sırasında keşfedildiği şekilde dizine eklenecek öğelerin listesini tutun.
Öğ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 eklenmiş bir öğeye atanmış bir etikettir. Varsayılan sıra için "varsayılan", B sırası için "B" gibi bir etiket kullanılır.
Durum ve öncelik
Dokümanın sıradaki önceliği ItemStatus
koduna bağlıdır. 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 bir 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ş olan dokümandır.
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 eklenmesi ile ilgili 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 karmalar 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ı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
değerini 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 geçişte, içerik bağlayıcısı öğeleri (meta veriler ve karma) bir dizine ekleme sırasına aktarmak için
items.push
simgesini kullanır. Sıra olmadığı için A'yıNEW_ITEM
olarak "sıra" ekler. 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 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
değerini kullanır. ÖğeACCEPTED
durumuna yalnızca Cloud Search öğeyi işlemeyi başarıyla tamamladıktan sonra girer.deleteQueueItems
yöntemi "B kuyruğunda" çağrılır. Ancak hiçbir öğe B sırasına aktarılmadığından hiçbir öğe silinemez.İkinci tam geçişte, içerik bağlayıcısı öğeleri (meta veriler ve karma) B sırasına aktarmak için
items.push
aracını kullanır:- Aktarırken bağlayıcı açık bir şekilde push
type
veyacontentHash
ekler. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
değerini kullanır. - Öğe bilinmiyorsa öğenin 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.
- Aktarırken bağlayıcı açık bir şekilde 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 hangi öğelerin dizine eklenmesi gerektiğini bildirir. Bu öğeler önce durum koduna, ardından sıraya göre sıralanır.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
değerini 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şlerle birlikte, dizine ekleme için kullanılan sıra ile silmek 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ıra işlemleri (REST API)
REST API, öğeleri sıraya aktarmak ve sıraya koymak için aşağıdaki iki yöntemi sunar:
- Bir öğeyi sıraya eklemek için
Items.push
simgesini kullanın. - Sıradaki öğeleri yoklamak için
Items.poll
öğesini 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
kullanıldığında, ankete katılan girişler rezerve edilmez. Ayrılmış ve ayrılmamış girişler hakkında daha fazla bilgi için Items.poll bölümüne bakın.
Karmalarla 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ğerleri bir push isteğiyle belirtilebilir. Cloud Search Dizine Ekleme Sırası, sağlanan karma değerlerini, veri kaynağındaki öğeyle kullanılabilen 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, sıradan en yüksek öncelikli girişleri 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 göre 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 alındı. Items.push
,NOT_MODIFIED
,REPOSITORY_ERROR
veyaREQUEUE
değerine sahip birtype
ile çağrılır.