Google Cloud Search Dizine Ekleme Sıraları

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.

Google Cloud Search dizine ekleme işlemine genel bakış
1. şekil. Öğe ekleme veya güncelleme için dizine ekleme adımları
  1. İç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 üzere items.push kullanır. Özellikle:

    • Bağlayıcı, verileri gönderirken açıkça bir gönderme type veya contentHash içerir.
    • Bağlayıcı type içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarak contentHash 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.

  2. İç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.

  3. Bağlayıcı, bu öğeleri depodan alır ve dizin API istekleri oluşturur.

  4. Bağlayıcı, öğeleri dizine eklemek için items.index kullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonra ACCEPTED 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.

Google Cloud Search dizine ekleme işlemine genel bakış
Şekil 2. Öğeleri silme
  1. İ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çin NEW_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.

  2. İç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.

  3. Bağlayıcı, bu öğeleri depodan alır ve dizin API istekleri oluşturur.

  4. Bağlayıcı, öğeleri dizine eklemek için items.index kullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonra ACCEPTED durumuna girer.

  5. 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.

  6. İ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 veya contentHash içerir.
    • Bağlayıcı type içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarak contentHash 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.
  7. İç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.

  8. Bağlayıcı, bu öğeleri depodan alır ve dizin API istekleri oluşturur.

  9. Bağlayıcı, öğeleri dizine eklemek için items.index kullanır. Öğe, yalnızca Cloud Search öğeyi başarıyla işledikten sonra ACCEPTED durumuna girer.

  10. 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.

  11. 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ğeri NOT_MODIFIED, REPOSITORY_ERROR veya REQUEUE olarak çağrılıyor.