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.

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

Google Cloud Search dizine ekleme işlemine genel bakış
Şekil 1. Öğe eklemek veya güncellemek için 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 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.

  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ı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 değerini 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 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.

  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 değerini kullanır. Öğe ACCEPTED durumuna yalnızca Cloud Search öğeyi işlemeyi başarıyla tamamladıktan sonra girer.

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

  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:

    • Aktarırken bağlayıcı açık bir şekilde push type veya contentHash ekler.
    • Bağlayıcı type içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarak contentHash 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.
  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 hangi öğelerin dizine eklenmesi gerektiğini bildirir. Bu öğeler önce durum koduna, ardından sıraya göre sıralanır.

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