Google Cloud Search Dizine Ekleme Sıraları

Connector SDK ve Cloud Search API, Cloud Search dizine ekleme kuyrukları oluşturmayı destekler. Bu sıraları kullanarak:

  • Dizinizi senkronize tutmak için belge başına durumu (durum, karma değerleri vb.) koruyun.
  • Geçiş sırasında keşfedilen, dizine eklenecek öğelerin listesini tutar.
  • Öğeleri durumlarına göre önceliklendirin.
  • Kontrol noktaları ve değişiklik jetonları gibi durum bilgilerini koruma.

Kuyruk, dizine eklenmiş bir öğeye (ör. "default").

Durum ve öncelik

Bir dokümanın önceliği ItemStatus koduna bağlıdır. Olası kodlar, öncelik sırasına (en yüksekten en düşüğe) göre şunlardır:

  • ERROR: Öğe, asenkron bir hatayla karşılaştı ve yeniden dizine eklenmesi gerekiyor.
  • MODIFIED: Öğe daha önce dizine eklenmiş ancak depoda değiştirilmiştir.
  • NEW_ITEM: Öğe henüz dizine eklenmemiştir.
  • ACCEPTED: Öğe daha önce dizine eklenmiş ve değiştirilmemiştir.

Aynı duruma sahip öğeler için en uzun süredir kuyrukta olanlara daha yüksek öncelik verilir.

Yeni veya değiştirilmiş bir öğeyi dizine ekleme

Şekil 1'de, bir dizine ekleme sırası kullanarak yeni veya değiştirilmiş bir öğeyi dizine ekleme adımları gösterilmektedir. Bu adımlar REST API çağrılarını yansıtır. SDK eşdeğerleri için Kuyruk işlemleri (Connector SDK) başlıklı makaleye bakın.

Cloud Search dizine ekleme işlemine genel bakış
Şekil 1. Öğe ekleme veya güncelleme için dizine ekleme adımları
  1. İçerik bağlayıcı, meta verileri ve karma değerleri bir sıraya göndermek için items.push kullanır.
    • Bağlayıcıda push type veya contentHash varsa durumu Cloud Search belirler.
    • Bilinmeyen öğeler NEW_ITEM durumunu alır.
    • Eşleşen karma değerlere sahip mevcut öğeler ACCEPTED olarak kalır.
    • Farklı karma değerlerine sahip mevcut öğeler MODIFIED olur.
  2. Bağlayıcı, hangi öğelerin dizine ekleneceğini belirlemek için items.poll öğesini kullanır. Cloud Search, öğeleri öncelik sırasına göre döndürür.
  3. Bağlayıcı, öğeleri depodan alır ve dizin API'si istekleri oluşturur.
  4. Bağlayıcı, öğeleri dizine eklemek için items.index kullanır. Bir öğe, başarılı bir şekilde işlendikten sonra ACCEPTED durumuna girer.

Öğe silme

Tam geçiş stratejisi, öğeleri dizine eklemek ve silme işlemlerini algılamak için iki sıra kullanır. Şekil 2'de bu stratejideki ikinci geçiş gösterilmektedir.

Cloud Search dizine ekleme işlemine genel bakış
Şekil 2. Öğeleri silme
  1. İlk geçişte bağlayıcı, öğeleri NEW_ITEM olarak "A sırasına" iter. Her öğe "A" etiketini alır.
  2. Bağlayıcı, A sırasını yoklar ve öğeleri dizine ekler.
  3. İkinci tam geçişte bağlayıcı, öğeleri "B sırasına" gönderir.
    • Bilinmeyen öğeler "B" etiketini ve NEW_ITEM durumunu alır.
    • Eşleşen karma değerlere sahip mevcut öğelerin etiketi "B" olarak değiştirilir ve öğeler ACCEPTED olarak kalır.
    • Farklı karma değerlere sahip mevcut öğelerin etiketi "B" olarak değişir ve MODIFIED olur.
  4. Bağlayıcı, B kuyruğunu yoklar ve öğeleri indeksler.
  5. Son olarak, bağlayıcı, A sırasındaki deleteQueueItems işlevini çağırır. Bu işlem, "A" etiketine sahip olan ve daha önce dizine eklenmiş tüm öğeleri siler.
  6. Sonraki geçişlerde iki kuyruğun rolleri değiştirilir.

Kuyruk işlemleri (Connector SDK)

Öğeleri göndermek için pushItems oluşturucuyu kullanın. SDK, Repository sınıfının getDoc yöntemini kullanarak öğeleri sıradan otomatik olarak öncelik sırasına göre çeker.

Sıra işlemleri (REST API)

Dizin oluşturma sırasında öğeleri göndermek için Items.index simgesini de kullanabilirsiniz. Bu öğeler otomatik olarak ACCEPTED durumunu alır.

Items.push

Bu yöntem, kimlikleri sıraya ekler. type sonucu belirler. Yeni bir kimlik gönderildiğinde NEW_ITEM durumuyla bir giriş eklenir. İsteğe bağlı yük, yoklama sırasında döndürülür.

Ankete dahil edilen öğeler ayrılır ve diğer anket çağrılarıyla döndürülemez. Items.push ile type parametresi NOT_MODIFIED, REPOSITORY_ERROR veya REQUEUE olarak ayarlanmışken kullanıldığında girişlerin rezervasyonu kaldırılır.

Karma değerlerle items.push

Push isteğinde meta verileri veya içerik karmalarını belirtin. Cloud Search, bunları depolanan değerlerle karşılaştırır. Eşleşmemeleri durumunda giriş MODIFIED olur. Mevcut olmayan, eşleşmeyen kimlikler NEW_ITEM olur.

Items.poll

Bu yöntem, yüksek öncelikli girişleri alır. Döndürülen her giriş, zaman aşımına uğrayana, yeniden dizine eklenene veya Items.push kullanılarak ayrılana kadar ayrılmış olur.