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.
İç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
aracını kullanır. Özellikle:- Aktarırken bağlayıcı açık bir şekilde push
type
veyacontentHash
ekler. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
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.
- Aktarırken bağlayıcı açık bir şekilde push
İç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.Bağlayıcı, bu öğeleri depodan alır ve index API istekleri oluşturur.
Bağlayıcı, öğeleri dizine eklemek için
items.index
değerini kullanır. ÖğeACCEPTED
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.
İ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.İç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.Bağlayıcı, bu öğeleri depodan alır ve index API istekleri oluşturur.
Bağlayıcı, öğeleri dizine eklemek için
items.index
değerini kullanır. ÖğeACCEPTED
durumuna yalnızca Cloud Search öğeyi işlemeyi başarıyla tamamladıktan sonra girer.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.İ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
veyacontentHash
ekler. - Bağlayıcı
type
içermiyorsa Cloud Search, öğenin durumunu belirlemek için otomatik olarakcontentHash
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.
- Aktarırken bağlayıcı açık bir şekilde push
İç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.Bağlayıcı, bu öğeleri depodan alır ve index API istekleri oluşturur.
Bağlayıcı, öğeleri dizine eklemek için
items.index
değerini kullanır. ÖğeACCEPTED
durumuna yalnızca Cloud Search öğeyi işlemeyi başarıyla tamamladıktan sonra girer.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.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
veyaREQUEUE
type
değeriyle çağrılır.