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.
İç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çinitems.push
etiketini kullanır. Özellikle:- Aktarma sırasında, bağlayıcı açıkça bir push
type
veyacontentHash
içerir. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
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.
- Aktarma sırasında, bağlayıcı açıkça bir push
İç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.Bağlayıcı, bu öğeleri depodan alır ve dizin API'si istekleri oluşturur.
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 sonraACCEPTED
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.
İ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_ITEM
kullanır. Her öğeye "A sırası" için "A" etiketi atanır. İçerik, Cloud Search'e dizine eklenir.İç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.Bağlayıcı, bu öğeleri depodan alır ve dizin API'si istekleri oluşturur.
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 sonraACCEPTED
durumuna girer.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.İ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
veyacontentHash
içerir. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
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.
- Aktarma sırasında, bağlayıcı açıkça bir push
İç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.Bağlayıcı, bu öğeleri depodan alır ve dizin API'si istekleri oluşturur.
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 sonraACCEPTED
durumuna girer.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.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
veyaREQUEUE
değeriyle çağrılır.