Google Cloud Search Dizine Ekleme Sıraları

Bağlayıcı SDK'sı ve Google Cloud Search API, aşağıdaki görevlerin gerçekleştirilmesi için kullanılan Cloud Search Dizine Ekleme Sıralarının oluşturulmasına olanak tanır:

  • Dizininizi deponuzla senkronize halde tutmak için kullanılabilecek doküman başına durumu (durum, karma değerleri vb.) koruyun.

  • Geçiş işlemi sırasında keşfedilen dizine eklenecek öğelerin listesini tutun.

  • Sıralardaki öğelerin önceliğini öğe durumuna göre belirleyin.

  • Etkili entegrasyon için kontrol noktaları, değişiklik jetonu vb. gibi ek durum bilgilerini koruyun.

Sıra, dizine eklenmiş bir öğeye atanmış, varsayılan sıra için "varsayılan" veya B sırası için "B" gibi bir etikettir.

Durum ve öncelik

Bir belgenin sıradaki önceliği, ItemStatus koduna bağlıdır. Aşağıda, öncelik sırasına göre olası ItemStatus kodları verilmiştir (önce işlenenden en son işlenene kadar):

  • 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ş olan ve son dizine ekleme işleminden sonra depoda değiştirilmiş olan öğe.

  • NEW_ITEM - Dizine eklenmemiş öğe.

  • ACCEPTED - Daha önce dizine eklenmiş olan ve son dizine ekleme işleminden sonra depoda değişmemiş doküman.

Bir sıradaki iki öğe aynı duruma sahip olduğunda, en uzun süredir sırada olan öğ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, yeni veya değiştirilmiş bir öğeyi dizine ekleme sırası kullanarak dizine ekleme adımları gösterilmektedir. Bu adımlarda REST API çağrıları gösterilmektedir. Eşdeğer SDK çağrıları için Sıra işlemleri (Bağlayıcı SDK'sı) bölümünü inceleyin.

Google Cloud Search dizine eklemeye genel bakış
Şekil 1. Öğe eklemek veya güncellemek için dizine ekleme adımları
  1. İçerik bağlayıcısı, öğenin durumunu (MODIFIED, NEW_ITEM, DELETED) belirlemek amacıyla öğeleri (meta veriler ve karma) dizine ekleme sırasına aktarmak için items.push etiketini kullanır. Özellikle:

    • Aktarma sırasında, bağlayıcı 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 kullanır.
    • Öğe bilinmiyorsa öğe durumu NEW_ITEM olarak ayarlanır.
    • Öğe mevcutsa ve karma değerleri eşleşiyorsa durum ACCEPTED olarak saklanır.
    • Öğe mevcutsa ve karmalar farklıysa durum MODIFIED olur.

    Öğe durumunun nasıl oluşturulduğu hakkında daha fazla bilgi için Cloud Search başlangıç eğiticisindeki GitHub depolarını gezinme örnek koduna bakın.

    Aktarma işlemi genellikle bağlayıcıdaki içerik geçişi ve/veya değişiklik algılama işlemleriyle ilişkilendirilir.

  2. İçerik bağlayıcısı, dizine eklenecek öğeleri belirlemek üzere sırayı yoklamak için items.poll aracını kullanır. Cloud Search, bağlayıcıya en çok dizine eklenmesi gereken öğeleri bildirir. Bu öğeler, önce durum koduna ve ardından sıraya alma süresine göre sıralanır.

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

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

Bağlayıcı, artık depoda bulunmayan öğeleri silebilir veya değiştirilmemişse ya da kaynak deposu hatası varsa öğeyi tekrar aktarabilir. Öğe silme işlemleri 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 geçiş stratejisi, öğeleri dizine eklemek ve silme işlemlerini algılamak için iki sıra işlemi kullanır. Şekil 2'de, iki dizine ekleme sırası kullanarak bir öğeyi silme adımları gösterilmektedir. Özellikle, Şekil 2'de tam geçiş stratejisi kullanılarak gerçekleştirilen ikinci geçiş gösterilmektedir. Bu adımlar REST API çağrılarını kullanır. Eşdeğer SDK çağrıları için Sıra işlemleri (Bağlayıcı SDK'sı) bölümünü inceleyin.

Google Cloud Search dizine eklemeye genel bakış
Şekil 2. Öğeleri silme
  1. İlk geçişte, içerik bağlayıcısı öğeleri (meta veriler ve karma) dizine ekleme sırasına aktarmak için items.push simgesini, sırada mevcut olmadığı için "A sırasına" NEW_ITEMkullanır. Her öğeye "A sırası" için "A" etiketi atanır. İçerik, Cloud Search'e dizine eklenir.

  2. İçerik bağlayıcısı, dizine eklenecek öğeleri belirlemek amacıyla A sırasını yoklamak için items.poll aracını kullanır. Cloud Search, bağlayıcıya en çok dizine eklenmesi gereken öğeleri bildirir. Bu öğeler, önce durum koduna ve ardından sıraya alma süresine göre sıralanır.

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

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

  5. deleteQueueItems yöntemi "B sırasına" çağrılır. Ancak B sırasına hiçbir öğe aktarılmadığı için hiçbir şey silinemez.

  6. İ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:

    • Aktarma sırasında, bağlayıcı 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 kullanır.
    • Öğe bilinmiyorsa öğe durumu NEW_ITEM ve sıra etiketi "B" olarak değiştirilir.
    • Öğe varsa ve karma değerleri eşleşiyorsa durum ACCEPTED olarak saklanır ve sıra etiketi "B" olarak değiştirilir.
    • Öğe mevcutsa ve karmalar farklıysa durum MODIFIED olur ve sıra etiketi "B" olarak değiştirilir.
  7. İçerik bağlayıcısı, dizine eklenecek öğeleri belirlemek üzere sırayı yoklamak için items.poll aracını kullanır. Cloud Search, bağlayıcıya en çok dizine eklenmesi gereken öğeleri bildirir. Bu öğeler, önce durum koduna ve ardından sıraya alma süresine göre sıralanır.

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

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

  10. Son olarak, daha önce dizine eklenmiş olan ve hâlâ "A" sırasına sahip tüm CCloud Search öğelerini silmek için A sırasında deleteQueueItems çağrılır.

  11. Sonraki tam geçişlerle, dizine ekleme için kullanılan sıra ile silme işlemi için kullanılan sıra değiştirilir.

Sıra işlemleri (Bağlayıcı SDK'sı)

Content Connector SDK'sı bir sıraya öğe aktarmak ve sıradan öğe çekmek için işlemler sağlar.

Bir öğeyi paketlemek ve sıraya aktarmak için pushItems oluşturucu sınıfını kullanın.

Öğeleri işleme sırasından çekmek 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 sıradan çeker.

Sıra işlemleri (REST API)

REST API, öğeleri bir sıraya aktarmak ve sıradan çekmek için aşağıdaki iki yöntemi sunar:

  • Bir öğeyi sıraya aktarmak için Items.push işlevini kullanın.
  • Sıradaki öğeleri yoklamak için Items.poll işlevini kullanın.

Dizine ekleme sırasında öğeleri sıraya aktarmak için Items.index aracını da kullanabilirsiniz. Dizine ekleme sırasında sıraya aktarılan öğeler için type gerekmez ve bunlara otomatik olarak ACCEPTED durumu atanır.

Items.push

Items.push yöntemi, kimlikleri sıraya ekler. Bu yöntem, aktarma 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 kimlik aktarıldığında NEW_ITEM ItemStatus koduna sahip yeni bir giriş eklenir.

İsteğe bağlı yük her zaman depolanır, opak değer olarak ele alınır ve Items.poll üzerinden döndürülür.

Bir öğe sorgulandığında ayrılır, yani başka bir Items.poll çağrısıyla döndürülemez. Items.push type ile NOT_MODIFIED, REPOSITORY_ERROR veya REQUEUE olarak kullanıldığında, anket yapılan girişler için rezervasyon iptali kullanılır. Ayrılmış ve ayrılmamış girişler hakkında daha fazla bilgi edinmek için Items.poll bölümüne bakın.

Karma oluşturma içeren Items.push

Google Cloud Search API, Items.index isteklerinde meta veri ve içerik karma değerlerinin belirtilmesini 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 öğede mevcut olan depolanan değerlerle karşılaştırır. Uyuşmazsa söz konusu giriş MODIFIED olarak işaretlenir. İlgili bir öğe dizinde yoksa durum NEW_ITEM olur.

Items.poll

Items.poll yöntemi, sıradaki en yüksek öncelikli girişleri alır. İstenen ve döndürülen durum değerleri, istenen öncelikli sıraların durumunu veya döndürülen kimliklerin durumunu belirtir.

Varsayılan olarak, sıranın herhangi bir bölümündeki girişler, önceliğe göre döndürülebilir. Döndürülen her giriş ayrılmıştır ve aşağıdaki durumlardan biri karşılanana kadar diğer Items.poll çağrılarıyla döndürülmez:

  • Rezervasyon zaman aşımına uğruyor.
  • Giriş, Items.index tarafından tekrar sıraya alındı.
  • Items.push, type NOT_MODIFIED, REPOSITORY_ERROR veya REQUEUE değeriyle çağrılır.