Google Cloud Search şeması, nesneleri, özellikleri ve verilerin dizine eklenmesi ve sorgulanmasıyla ilgili seçenekleri tanımlayan bir JSON yapısıdır. İçerik bağlayıcınız, depo verilerini yapılandırmak ve dizine eklemek için kayıtlı şemayı kullanır.
API'ye bir JSON şema nesnesi sağlayarak şema oluşturursunuz. Verileri dizine eklemeden önce her depo için bir şema kaydetmeniz gerekir.
Bu belgede, şema oluşturmayla ilgili temel bilgiler verilmektedir. Arama deneyimini optimize etmek için Arama kalitesini artırma başlıklı makaleyi inceleyin.
Şema oluşturun
Cloud Search şemanızı oluşturmak için aşağıdaki adımları uygulayın:
- Beklenen kullanıcı davranışını belirleme
- Veri kaynağını başlatma
- Nesnelerinizi tanımlama
- Nesne özelliklerini tanımlama
- Şemanızı kaydetme
- Verilerinizi dizine ekleme
- Şemanızı test etme
- Şemanızı ayarlama
Beklenen kullanıcı davranışını belirleme
Kullanıcıların nasıl arama yapacağını tahmin etmek, şema stratejinizi tanımlamanıza yardımcı olur. Bir film veritabanında kullanıcılar "Robert Redford'ın oynadığı filmler" şeklinde arama yapabilir. Şemanız, belirli bir aktörün yer aldığı filmlerle ilgili sorguları desteklemelidir.
Şemanızı kullanıcı davranışıyla uyumlu hale getirmek için:
- Farklı kullanıcılardan gelen çeşitli sorguları değerlendirin.
- "Film" gibi mantıksal veri kümelerini veya nesneleri tanımlayın.
- Başlık veya yayın tarihi gibi özellikleri (nitelikler) belirleyin.
- "Kutsal Hazine Avcıları" gibi özellikler için geçerli değerleri belirleyin.
- Kronolojik sıra veya kitle derecelendirmeleri gibi sıralama ve derecelendirme ihtiyaçlarını belirleyin.
- Otomatik tamamlama önerilerini iyileştirmek için iş rolü gibi bağlam özelliklerini belirleyin.
- Bu nesneleri, özellikleri ve örnek değerleri listeleyin. Bu listeyi kullanarak operatör seçeneklerini tanımlayabilirsiniz.
Veri kaynağınızı başlatma
Veri kaynağı, Google Cloud'da depolanan dizine eklenmiş depo verilerini ifade eder. Üçüncü taraf veri kaynaklarını yönetme başlıklı makaleyi inceleyin. Bir kullanıcı sonucu tıkladığında Cloud Search, dizine ekleme isteğindeki URL'yi kullanarak kullanıcıyı öğeye yönlendirir.
Nesnelerinizi tanımlama
Nesne, şemanın temel birimidir. "Film" veya "kişi" gibi mantıksal yapılar nesnedir. Her nesnenin başlık, süre veya ad gibi özellikleri vardır.
Şema, objectDefinitions etiketindeki nesne tanımlarının listesidir.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Her nesne için benzersiz adlar kullanın (ör. movie). Şema hizmeti bu adları anahtar olarak kullanır. ObjectDefinition konusuna bakın.
Nesne özelliklerini tanımlama
Başlık ve yayın tarihi gibi özellikleri propertyDefinitions bölümünde tanımlayın. options
freshnessOptions
(sıralama) ve
displayOptions
(kullanıcı arayüzü etiketleri) için kullanın.
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
Bir PropertyDefinition şunları içerir:
namedizesi.- Türden bağımsız seçenekler (ör.
isReturnable). - Bir tür ve türe özgü seçenekler (ör.
textPropertyOptions). operatorOptionsarama operatörleri için.displayOptionskullanıcı arayüzü etiketleri için.
Farklı nesnelerde özellik adlarını yeniden kullanabilirsiniz. Örneğin, movieTitle
hem movie nesnesinde hem de person nesnesinin filmografisinde görünebilir.
Türden bağımsız seçenekler ekleme
PropertyDefinition, türünden bağımsız olarak bir mülkte arama işlevini yapılandırmak için boole seçenekleri içerir. Bu seçenekler varsayılan olarak false şeklindedir ve kullanılabilmeleri için true olarak ayarlanmaları gerekir.
isReturnable: Mülk verileri Query API kullanılarak arama sonuçlarında döndürülmelidirsetrueolarak ayarlayın. İade edilemeyen özellikler, sonuçlarda görünmeden arama veya sıralama için kullanılabilir.isRepeatable: Özellik birden fazla değere sahip olabiliyorsatrueolarak ayarlayın. Örneğin, bir filmin tek bir yayın tarihi ancak birden fazla oyuncusu vardır.isSortable: Özellik sıralama için kullanılabiliyorsatrueolarak ayarlayın.isRepeatable,trueise veya özellik tekrarlanabilir bir alt nesnenin içindeysetrueolamaz.isFacetable: Özellik, yön oluşturmak (arama sonuçlarını daraltmak için kullanılan özellikler) için kullanılabiliyorsatrueolarak ayarlayın.isReturnabledeğerinintrueolması gerekir.- Yalnızca enum, boolean ve metin özellikleri için desteklenir.
isWildcardSearchable: Kullanıcıların bu özellik üzerinde joker karakter aramaları yapmasına izin vermek içintrueolarak ayarlayın. Bu seçenek yalnızca metin özelliklerinde kullanılabilir ve davranışıexactMatchWithOperatorayarına bağlıdır:exactMatchWithOperator,trueise: Metin değeri tek bir jeton olarak değerlendirilir.science-*gibi bir sorgu,science-fictiondeğeriyle eşleşir.exactMatchWithOperatordeğerifalseise: Metin değeri jetonlaştırılır.sci*veyafi*gibi bir sorguscience-fictionile eşleşir ancakscience-*ile eşleşmez.
Tür tanımlama
Uygun özellik seçenekleri nesnesini (ör.
textPropertyOptions). Olası tüm değerleri biliyorsanız enum'ları (enumPropertyOptions) kullanın. Bir mülk yalnızca bir veri türüne sahip olabilir.
Operatör seçeneklerini tanımlama
operatorOptions Bir özelliğin arama operatörü olarak nasıl çalıştığını açıklayın.
Her operatorOptions için bir operatorName gerekir (ör. title). Bu, kullanıcıların sorgulara yazdığı parametredir (ör. title:titanic). Sezgisel adlar kullanın ve bunları kullanıcılara gösterin.
Aynı türdeki mülkler arasında operatorName paylaşabilirsiniz. Bu adı kullanan sorgular, eşleşen tüm mülklerden sonuç alır.
Sıralanabilir özellikler, karşılaştırma sorguları için lessThanOperatorName ve greaterThanOperatorName özelliklerini içerebilir. Metin özellikleri, değerin tamamını tek bir jeton olarak değerlendirmek için exactMatchWithOperator kullanabilir.
Görüntüleme seçenekleri ekleme
İsteğe bağlı displayOptions bölümünde displayLabel bulunuyor. Bu, arama sonuçlarında gösterilen kullanıcı dostu bir etikettir.
Öneri filtreleme operatörleri ekleme
Otomatik tamamlama önerilerini filtreleyen bir özellik tanımlamak için suggestionFilteringOperators[] kullanın (ör. film önerilerini kullanıcının tercih ettiği türe göre filtreleme). Yalnızca bir öneri filtresi tanımlayabilirsiniz.
Şemanızı kaydetme
Veri kaynağı kimliğinizi kullanarak şemanızı şema hizmetine kaydedin. UpdateSchema isteği gönderin:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Şemanızı kaydetmeden test etmek için validateOnly: true aracını kullanın.
Verilerinizi dizine ekleme
Kaydın ardından, genellikle bir bağlayıcı ile Index çağrılarını kullanarak veri kaynağını doldurun.
Örnek dizine ekleme isteği:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
Şemanızı test etme
Üretime geçmeden önce küçük bir depoyla test edin. Sonuçları bir test kullanıcısıyla sınırlayan bir ACL oluşturun.
- Genel sorgu: Bir dizeyi arayın (ör. "titanic") yazarak eşleşen tüm öğeleri görebilirsiniz.
- Operatör sorgusu: Bir operatör kullanın (ör.
actor:Zane) kullanarak sonuçları sınırlandırabilirsiniz.
Şemanızı ayarlama
Kullanıcı geri bildirimlerini izleyin ve şemanızı buna göre ayarlayın. Yeni alanları dizine ekleyebilir veya operatörleri daha sezgisel olacak şekilde yeniden adlandırabilirsiniz.
Şema değişikliğinden sonra yeniden indeksleme
Aşağıdaki değişiklikler için yeniden indeksleme yapmanız gerekmez:
- Operatör adları.
- Sayısal sınırlar.
- Sıralı sıralama.
- Güncellik veya görüntüleme seçenekleri
Aşağıdakiler için yeniden indeksleme yapmanız gerekir:
- Mülk veya nesne ekleme ya da kaldırma
isReturnable,isFacetableveyaisSortabledeğerinitrueolarak değiştirme.- Bir mülkü
isSuggestableolarak işaretleme
İzin verilmeyen mülk değişiklikleri
Dizini bozan veya tutarsız sonuçlara neden olan değişikliklere izin verilmez. Bu değişiklikler arasında şunlar yer alır:
- Özellik veri türü veya adı.
exactMatchWithOperatorveyaretrievalImportanceayarları.
Karmaşık bir şema değişikliği yapma
İzin verilmeyen bir değişiklik yapmak için özellikleri eski bir tanımdan yeni bir tanıma taşıyın:
- Şemaya farklı bir ada sahip yeni bir özellik ekleyin.
- Şemayı hem yeni hem de eski özelliklerle kaydedin.
- Dizini yalnızca yeni özelliği kullanarak doldurun.
- Eski mülkü şemadan silin.
- Sorgu kodunuzu yeni mülk adını kullanacak şekilde güncelleyin.
Cloud Search, yeniden kullanımla ilgili sorunları önlemek için silinen öğeleri 30 gün boyunca kaydeder.
Boyut sınırlamaları
- En fazla 10 üst düzey nesne.
- Maksimum derinlik 10 seviyedir.
- Nesne başına en fazla 1.000 alan (iç içe yerleştirilmiş alanlar dahil).
Sonraki Adımlar
- Arama arayüzü oluşturun.
- Arama kalitesini artırın.
- En iyi sorgu yorumu için bir şema oluşturun.
- Eş anlamlı kelimeleri tanımlayın.