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

Google Cloud Search dizine ekleme işlemine genel bakış
Şekil 1. Öğe ekleme veya güncellemeyle ilgili dizine ekleme adımları
  1. İç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 üzere items.push kullanır. Daha ayrıntılı olarak:

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

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

  3. Bağlantılayıcı, bu öğeleri depodan alır ve dizin API isteklerini 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ğ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.

Google Cloud Search dizine ekleme işlemine genel bakış
Şekil 2. Öğeleri silme
  1. İ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çin NEW_ITEM olarak "A kuyusu" kullanılır. Her öğeye "A kuyruğu" için "A" etiketi atanır. İçerik, Cloud Search'te dizine eklenir.

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

  3. Bağlantılayıcı, bu öğeleri depodan alır ve dizin API isteklerini 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 kuyruğunda" çağrılır. Ancak B kuyruğuna öğe eklenmediğinden hiçbir şey silinemeyecektir.

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

  8. Bağlantılayıcı, bu öğeleri depodan alır ve dizin API isteklerini 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, "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.

  11. 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 ItemStatuskodu 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 veya REQUEUE değerine sahip bir type ile çağrılır.