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.
- İçerik bağlayıcı, meta verileri ve karma değerleri bir sıraya göndermek için
items.pushkullanır.- Bağlayıcıda push
typeveyacontentHashvarsa durumu Cloud Search belirler. - Bilinmeyen öğeler
NEW_ITEMdurumunu alır. - Eşleşen karma değerlere sahip mevcut öğeler
ACCEPTEDolarak kalır. - Farklı karma değerlerine sahip mevcut öğeler
MODIFIEDolur.
- Bağlayıcıda push
- 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. - Bağlayıcı, öğeleri depodan alır ve dizin API'si istekleri oluşturur.
- Bağlayıcı, öğeleri dizine eklemek için
items.indexkullanır. Bir öğe, başarılı bir şekilde işlendikten sonraACCEPTEDdurumuna 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.
- İlk geçişte bağlayıcı, öğeleri
NEW_ITEMolarak "A sırasına" iter. Her öğe "A" etiketini alır. - Bağlayıcı, A sırasını yoklar ve öğeleri dizine ekler.
- İkinci tam geçişte bağlayıcı, öğeleri "B sırasına" gönderir.
- Bilinmeyen öğeler "B" etiketini ve
NEW_ITEMdurumunu alır. - Eşleşen karma değerlere sahip mevcut öğelerin etiketi "B" olarak değiştirilir ve öğeler
ACCEPTEDolarak kalır. - Farklı karma değerlere sahip mevcut öğelerin etiketi "B" olarak değişir ve
MODIFIEDolur.
- Bilinmeyen öğeler "B" etiketini ve
- Bağlayıcı, B kuyruğunu yoklar ve öğeleri indeksler.
- Son olarak, bağlayıcı, A sırasındaki
deleteQueueItemsişlevini çağırır. Bu işlem, "A" etiketine sahip olan ve daha önce dizine eklenmiş tüm öğeleri siler. - 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)
- Göndermek için
Items.push'i kullanın. - Anket yapmak için
Items.pollsimgesini kullanın.
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.