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ının oluşturulmasına olanak tanır:

  • Dizininizi deponuzla senkronize etmek için kullanılabilecek doküman başına durumu (durum, karma 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ıralardaki öğelere öncelik verin.

  • Verimli entegrasyon için kontrol noktaları ve değişiklik jetonu gibi ek durum bilgilerini koruyun.

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. Olası ItemStatus kodları öncelik sırasına göre düzenlenmiştir (ilk olarak son ele alınır):

  • 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 eklenmiş ve son dizine ekleme tarihinden 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ş olan dokümandır.

Bir kuyruktaki iki öğe aynı duruma sahip olduğunda, en uzun süredir sırada bekleyen öğ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şlemlerine (Bağlayıcı SDK'sı) bakın.

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ı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 aracını kullanır. Özellikle:

    • 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 etiketini kullanır.
    • Öğe bilinmiyorsa öğe durumu NEW_ITEM olarak ayarlanır.
    • Öğe varsa ve karma değerleri eşleşiyorsa 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ğitimindeki GitHub depolarında 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 simgesini 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.

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

Bağlayıcı, depoda artık bulunmayan bir öğeyi de silebilir veya değiştirilmemiş ya da kaynak deposu hatası varsa bir öğeyi tekrar aktarabilir. Öğe silme işlemleri hakkında bilgi edinmek için bir sonraki bölüme bakın.

Öğe silmek için dizine ekleme sıralarını kullanmaya genel bakış

Tam geçiş stratejisi, öğeleri dizine eklemek ve silme işlemlerini tespit etmek için iki sıralı bir süreç kullanır. Şekil 2'de, iki dizine ekleme sırası kullanılarak 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ımlarda REST API çağrıları kullanılır. Eşdeğer SDK çağrıları için Sıra işlemleri (Bağlayıcı 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'e dizine eklenir.

  2. İçerik bağlayıcısı, dizine eklenecek öğeleri belirlemek amacıyla A sırasını yoklamak için items.poll simgesini 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.

  3. Bağlayıcı, bu öğeleri depodan alır ve index API istekleri 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 "sıra B" olarak adlandı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 etiketini kullanır.
    • Öğe bilinmiyorsa öğenin 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 korunur 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 simgesini 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ğlayıcı, bu öğeleri depodan alır ve index API istekleri oluşturur.

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

  10. Son olarak, daha önce dizine eklenmiş olan ve hâlâ "A" sırası "A" etiketine sahip olan 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ıra işlemleri (Bağlayıcı SDK'sı)

Content Connector SDK'sı, öğeleri bir sıraya aktarma ve sıraya öğe çekme için işlemler sağlar.

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

Öğeleri işlenmek üzere bir sıradan çekmek için özel bir şey yapmanız gerekmez. Bunun yerine SDK, Repository sınıfının getDoc yöntemini kullanarak öğeleri öncelik sırasına göre sıradan otomatik olarak çeker.

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 aktarmak için Items.push işlevini kullanın.
  • Sıradaki öğeleri yoklamak için Items.poll öğesini 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 type gerektirmez ve bu öğelere 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 bir kimlik aktarıldığında NEW_ITEM ItemStatus koduyla yeni bir giriş eklenir.

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

Bir öğe anket yapıldığında ayrılır, yani Items.poll'a yapılan başka bir çağrıyla iade edilemez. Items.push, type ile NOT_MODIFIED, REPOSITORY_ERROR veya REQUEUE ile kullanıldığında anket girişlerinin rezervini 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.

Karmalarla Items.push

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 kullanılabilen depolanan değerlerle karşılaştırır. Uyumsuzsa söz konusu giriş MODIFIED olarak işaretlenir. Karşılık gelen bir öğe dizinde 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 öncelik sıralarının veya döndürülen kimliklerin durumunu gösterir.

Varsayılan olarak, sıranın herhangi bir bölümünden elde edilen girişler, önceliğe bağlı olarak 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ı tarafından döndürülmez:

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