Google Cloud Search şeması, verilerinizin dizine eklenmesi ve sorgulanmasında kullanılacak nesneleri, özellikleri ve seçenekleri tanımlayan bir JSON yapısıdır. İçerik bağlayıcınız, deponuzdaki verileri okur ve kayıtlı şemanıza bağlı olarak verileri yapılandırıp dizine ekler.
API'ye bir JSON şema nesnesi sağlayıp bunu kaydederek şema oluşturabilirsiniz. Verilerinizi dizine ekleyebilmek için önce depolarınızın her biri için bir şema nesnesi kaydetmeniz gerekir.
Bu dokümanda, şema oluşturmayla ilgili temel bilgiler verilmektedir. Arama deneyimini iyileştirmek amacıyla şemanızı ayarlama hakkında bilgi edinmek için Arama kalitesini artırma başlıklı makaleyi inceleyin.
Şema oluşturun
Cloud Search şemanızı oluşturmak için kullanılan adımların listesi aşağıda verilmiştir:
- Beklenen kullanıcı davranışını belirleme
- Veri kaynağını başlatma
- Şema oluşturma
- Örnek şemayı tamamlama
- Şemanızı kaydetme
- Verilerinizi dizine ekleme
- Şemanızı test etme
- Şemanızı ayarlama
Beklenen kullanıcı davranışını belirleyin
Kullanıcılarınızın yaptığı sorgu türlerini tahmin etmek, şemanızı oluşturma stratejinizi yönlendirmenize yardımcı olur.
Örneğin, bir film veritabanına yönelik sorgular yayınlarken kullanıcının "Robert Redford'ın başrolde olduğu tüm filmleri göster" gibi bir sorgu yapmasını bekleyebilirsiniz. Bu nedenle şemanızın, "belirli bir oyuncuya sahip tüm filmler"e dayalı sorgu sonuçlarını desteklemesi gerekir.
Şemanızı kullanıcılarınızın davranış kalıplarını yansıtacak şekilde tanımlamak için şu görevleri gerçekleştirmeyi düşünün:
- Farklı kullanıcılardan istenen çeşitli sorguları değerlendirin.
- Sorgularda kullanılabilecek nesneleri tanımlayın. Nesneler, filmlerden oluşan bir veritabanındaki film gibi ilgili verilerin mantıksal kümeleridir.
- Nesneyi oluşturan ve sorgularda kullanılabilecek özellikleri ve değerleri tanımlayın. Özellikler, nesnenin dizine eklenebilir özellikleridir; temel değerleri veya başka nesneleri içerebilir. Örneğin, bir film nesnesi, film adı ve yayın tarihi gibi özellikleri temel değerler olarak içerebilir. Film nesnesi, oyuncu kadrosu gibi kendi özellikleri (ör. adları veya rolleri) olan başka nesneler de içerebilir.
- Tesisler için örnek geçerli değerler tanımlama. Değerler, bir mülk için dizine eklenen gerçek verilerdir. Örneğin, veritabanınızdaki bir filmin başlığı "Kayıp Gemi Avcıları" olabilir.
- Kullanıcılarınızın istediği sıralama ve sıralama seçeneklerini belirleyin. Örneğin, kullanıcılar filmleri sorgularken kronolojik olarak ve kitle derecelendirmesine göre sıralama yapmak isteyebilir ve başlığa göre alfabetik olarak sıralamaları gerekmez.
- (isteğe bağlı) Mülklerinizden birinin, aramaların yürütülebileceği daha spesifik bir bağlamı (kullanıcının iş rolü veya bölümü gibi) temsil edip etmediğini göz önünde bulundurun. Böylece bağlama göre otomatik tamamlama önerileri sağlanabilir. Örneğin, bir film veritabanında arama yapan kullanıcılar yalnızca belirli bir film türüyle ilgileniyor olabilir. Kullanıcılar, muhtemelen kullanıcı profillerinin bir parçası olarak, aramaların hangi türün döndürülmesini istediklerini belirleyecektir. Daha sonra, kullanıcı film sorgusu yazmaya başladığında, otomatik tamamlama önerileri kapsamında yalnızca tercih ettiği türdeki "aksiyon filmleri" gibi filmler önerilir.
- Aramalarda kullanılabilecek bu nesnelerin, özelliklerin ve örnek değerlerin bir listesini yapın. (Bu listenin nasıl kullanıldığıyla ilgili ayrıntılar için Operatör seçeneklerini tanımlama bölümüne bakın.)
Veri kaynağınızı başlatma
Veri kaynağı, Google Cloud'da dizine eklenmiş ve depolanan bir depodaki verileri temsil eder. Veri kaynağını başlatmayla ilgili talimatlar için Üçüncü taraf veri kaynaklarını yönetme başlıklı makaleye bakın.
Kullanıcının arama sonuçları veri kaynağından döndürülür. Kullanıcı bir arama sonucunu tıkladığında Cloud Search, dizine ekleme isteğinde sağlanan URL'yi kullanarak kullanıcıyı gerçek öğeye yönlendirir.
Nesnelerinizi tanımlayın
Bir şemadaki temel veri birimi, "şema nesnesi" olarak da adlandırılan nesnedir. Nesne, verilerin mantıksal yapısıdır. Bir film veritabanında verilerin mantıksal yapılarından biri "film"dir. Bir diğer nesne de filmin oyuncu kadrosunu ve ekibi temsil eden "kişi" olabilir.
Şemadaki her nesne, bir filmin başlığı ve süresi ya da bir kişinin adı ve doğum tarihi gibi nesneyi tanımlayan bir dizi özellik veya özelliğe sahiptir. Bir nesnenin özellikleri, temel değerleri veya diğer nesneleri içerebilir.
Şekil 1'de film ve kişi nesneleri ile ilişkili özellikler gösterilmektedir.
Cloud Search şeması, objectDefinitions
etiketi içinde tanımlanan nesne tanımı ifadelerinin listesidir. Aşağıdaki şema snippet'inde film ve kişi şeması nesneleri için objectDefinitions
ifadeleri gösterilmektedir.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Bir şema nesnesi tanımlarken, şemadaki diğer tüm nesneler arasında benzersiz olması gereken nesne için bir name
sağlarsınız. Genellikle, nesneyi tanımlayan bir name
değeri kullanırsınız (ör. film nesnesi için movie
). Şema hizmeti, name
alanını dizine eklenebilir nesneler için anahtar tanımlayıcısı olarak kullanır. name
alanı hakkında daha fazla bilgi için Nesne Tanımı bölümüne bakın.
Nesne özelliklerini tanımlayın
ObjectDefinition referansında belirtildiği gibi, nesne adının ardından bir options
grubu ve propertyDefinitions
listesi gelir.
options
, freshnessOptions
ve displayOptions
simgelerinden oluşabilir.
freshnessOptions
, arama sıralamasını bir öğenin güncelliğine göre ayarlamak için kullanılır. displayOptions
, bir nesnenin arama sonuçlarında belirli etiketlerin ve özelliklerin görüntülenip görüntülenmeyeceğini tanımlamak için kullanılır.
propertyDefinitions
bölümünde bir nesnenin film adı ve yayın tarihi gibi özelliklerini tanımlayabilirsiniz.
Aşağıdaki snippet'te iki özelliği olan movie
nesnesi gösterilmektedir: movieTitle
ve releaseDate
.
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": 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"
}
},
"displayOptions": {
"displayLabel": "Release date"
}
...
]
}
]
}
PropertyDefinition aşağıdaki öğelerden oluşur:
name
dizesi.- Önceki snippet'teki
isReturnable
gibi türden bağımsız seçeneklerin listesi. - Bir tür ve önceki snippet'te
textPropertyOptions
veretrievalImportance
gibi ilişkili türe özel seçenekler. - Mülkün arama operatörü olarak nasıl kullanıldığını açıklayan
operatorOptions
. - Önceki snippet'teki
displayLabel
gibi bir veya daha fazladisplayOptions
.
Bir özelliğin name
, kapsayıcı nesne içinde benzersiz olmalıdır ancak aynı ad diğer nesnelerde ve alt nesnelerde kullanılabilir.
Şekil 1'de filmin adı ve yayın tarihi iki kez tanımlanmıştır: bir kez movie
nesnesinde ve ikinci kez person
nesnesinin filmography
alt nesnesinde. Bu şema, iki tür arama davranışını destekleyebilmesi için movieTitle
alanını yeniden kullanır:
- Kullanıcılar bir filmin adını aradığında film sonuçlarını gösterin.
- Kullanıcılar, bir oyuncunun oynadığı filmin adını aradığında kişi sonuçlarını gösterin.
Benzer şekilde, şema iki movieTitle
alanı için de aynı anlama sahip olduğundan releaseDate
alanını yeniden kullanır.
Kendi şemanızı geliştirirken, deponuzun şemanızda birden çok kez bildirmek istediğiniz verileri içeren ilgili alanlara nasıl sahip olabileceğini düşünün.
Türden bağımsız seçenekler ekleyin
PropertyDefinition'nda, veri türünden bağımsız olarak tüm mülklerde ortak olan genel arama işlevi seçenekleri listelenir.
isReturnable
- Mülkün, Query API aracılığıyla arama sonuçlarında döndürülmesi gereken verileri tanımlayıp tanımlamadığını belirtir. Örnek film özelliklerinin tümü döndürilebilir. Döndürülemez özellikler, kullanıcıya döndürülmeden sonuçları aramak veya sıralamak için kullanılabilir.isRepeatable
- Mülk için birden çok değere izin verilip verilmediğini gösterir. Örneğin, bir filmin yalnızca bir yayın tarihi vardır ancak birden fazla oyuncu bulunabilir.isSortable
- Özelliğin sıralama için kullanılabileceğini belirtir. Bu, tekrarlanabilir özellikler için doğru değildir. Örneğin, film sonuçları yayın tarihine veya kitle derecelendirmesine göre sıralanabilir.isFacetable
- Özelliğin facets oluşturmak için kullanılabileceğini belirtir. Özellik, arama sonuçlarını hassaslaştırmak için kullanılır. Böylece kullanıcı, ilk sonuçları görür ve ardından bu sonuçları daha da hassaslaştırmak için ölçütler veya özellikler ekler. Bu seçenek, türü nesne olan mülkler için doğru olamaz ve bu seçeneğin ayarlanması içinisReturnable
doğru olmalıdır. Son olarak, bu seçenek yalnızca enum, boole ve metin özellikleri için desteklenir. Örneğin, örnek şemamızdagenre
,actorName
,userRating
vempaaRating
özelliklerini kullanarak arama sonuçlarının etkileşimli olarak ayrıntılandırılması için kullanılabilmelerini sağlayabiliriz.isWildcardSearchable
, kullanıcıların bu özellik için joker karakterle arama yapabileceğini belirtir. Bu seçenek yalnızca metin özelliklerinde kullanılabilir. Joker karakter aramasının metin alanında nasıl çalışacağı, exactMatchWithOperator alanında ayarlanan değere bağlıdır.exactMatchWithOperator
,true
olarak ayarlanırsa metin değeri tek bir atom değer olarak tokenlere ayrılır ve buna karşılık joker karakter araması gerçekleştirilir. Örneğin, metin değeriscience-fiction
ise joker karakter sorgususcience-*
ile eşleşir.exactMatchWithOperator
,false
olarak ayarlanırsa metin değeri tokenlere ayrılır ve her jeton için joker karakterle arama gerçekleştirilir. Örneğin, metin değeri "bilim kurgu" ise joker karakter sorgususci*
veyafi*
ile eşleşir, ancakscience-*
öğeyle eşleşmez.
Bu genel arama işlevi parametrelerinin tümü boole değerleridir; hepsinin varsayılan değeri false
vardır ve kullanılabilmesi için true
olarak ayarlanması gerekir.
Aşağıdaki tabloda movie
nesnesinin tüm özellikleri için true
olarak ayarlanan boole parametreleri gösterilmektedir:
Özellik | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
true | true | |||
releaseDate |
true | true | |||
genre |
true | true | true | ||
duration |
true | ||||
actorName |
true | true | true | true | |
userRating |
true | true | |||
mpaaRating |
true | true |
Bir film birden fazla türe ait olabileceği ve genellikle birden fazla oyuncuya sahip olabileceği için hem genre
hem de actorName
isRepeatable
true
olarak ayarlandı. Tekrarlanabilir bir özellik veya tekrarlanabilir bir alt nesnede yer alan özellikler sıralanamaz.
Türü tanımla
PropertyDefinition referans bölümünde xx
gibi belirli bir tür (ör. boolean
) birkaç xxPropertyOptions
listelenmektedir. Mülkün veri türünü ayarlamak için uygun veri türü nesnesini tanımlamanız gerekir. Bir mülk için veri türü nesnesi tanımlandığında, söz konusu mülkün veri türü belirlenir. Örneğin, movieTitle
özelliği için textPropertyOptions
tanımlanması, film başlığının metin türünde olduğunu belirtir. Aşağıdaki snippet'te, veri türünü textPropertyOptions
olarak ayarlayan movieTitle
özelliği gösterilmektedir.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
Bir mülkün yalnızca tek bir ilişkilendirilmiş veri türü olabilir. Örneğin, film şemamızda releaseDate
yalnızca bir tarih olabilir (ör. 2016-01-13
) veya bir dize (ör. January 13, 2016
) ancak her ikisi birden değil.
Aşağıda, örnek film şemasındaki mülklere ilişkin veri türlerini belirtmek için kullanılan veri türü nesneleri verilmiştir:
Özellik | Veri türü nesne |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
Mülk için seçtiğiniz veri türü, beklenen kullanım alanlarına bağlıdır.
Bu film şemasının hayali senaryosunda, kullanıcıların sonuçları kronolojik olarak sıralamak istemeleri beklenir. Bu nedenle releaseDate
bir tarih nesnesidir.
Örneğin, yıllar genelinde Aralık sürümlerini Ocak sürümleriyle karşılaştırmak için beklenen bir kullanım alanı varsa dize biçimi yararlı olabilir.
Türe özel seçenekleri yapılandırma
PropertyDefinition referans bölümü, her tür için seçeneklere bağlantı verir. enumPropertyOptions
içindeki possibleValues
listesi hariç, türe özel çoğu seçenek isteğe bağlıdır. Ayrıca orderedRanking
seçeneği, değerleri birbirine göre sıralamanıza olanak tanır. Aşağıdaki snippet'te movieTitle
özelliği, veri türünü ayarlayan textPropertyOptions
ve retrievalImportance
türe özel seçeneği ile gösterilmektedir.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
Örnek şemada kullanılan türe özel ek seçenekler şunlardır:
Özellik | Tür | Türe özel seçenekler |
---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking , maximumValue |
mpaaRating |
textPropertyOptions |
Operatör seçeneklerini tanımlayın
Türe özel seçeneklere ek olarak her tür için isteğe bağlı bir grup bulunur operatorOptions
Bu seçenekler, mülkün arama operatörü olarak nasıl kullanıldığını açıklar. Aşağıdaki snippet'te, veri türünü ayarlayan textPropertyOptions
ile retrievalImportance
ve operatorOptions
türüne özel seçenekler içeren movieTitle
özelliği gösterilmektedir.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
Her operatorOptions
bir operatorName
içerir (ör. movieTitle
için title
). Operatör adı, mülkün arama operatörüdür. Arama operatörü, kullanıcıların bir aramayı daraltırken kullanmalarını beklediğiniz gerçek parametredir. Örneğin, filmleri adlarına göre aramak için kullanıcı title:movieName
yazar. Burada movieName
filmin adıdır.
Operatör adlarının, mülk adıyla aynı olması gerekmez. Bunun yerine, kuruluşunuzdaki kullanıcıların en sık kullandığı kelimeleri yansıtan operatör adları kullanmanız gerekir. Örneğin, kullanıcılarınız bir film başlığı için "başlık" yerine "ad" terimini tercih ediyorsa operatör adı "ad" olarak ayarlanmalıdır.
Tüm özellikler aynı türe çözümlendiği sürece, birden fazla mülk için aynı operatör adını kullanabilirsiniz. Bir sorgu sırasında paylaşılan operatör adı kullanılırken bu operatör adını kullanan tüm özellikler alınır. Örneğin, film nesnesinin plotSummary
ve plotSynopsis
özelliklerine sahip olduğunu ve bu özelliklerin her birinin operatorName
değerinin plot
olduğunu varsayalım. Bu özelliklerin ikisi de metin (textPropertyOptions
) olduğu sürece, plot
arama operatörünü kullanan tek bir sorgu her ikisini de alır.
operatorName
özelliğine ek olarak, sıralanabilir özellikler de operatorOptions
içinde lessThanOperatorName
ve greaterThanOperatorName
alanlarına sahip olabilir.
Kullanıcılar, gönderilen bir değerle yapılan karşılaştırmaları temel alan sorgular oluşturmak için bu seçenekleri kullanabilir.
Son olarak, textOperatorOptions
için operatorOptions
içinde bir exactMatchWithOperator
alanı vardır. exactMatchWithOperator
öğesini true
olarak ayarlarsanız sorgu dizesi yalnızca metnin içinde değil, özellik değerinin tamamıyla eşleşmelidir.
Metin değeri, operatör aramalarında ve özellik eşlemelerinde tek bir atom değer olarak ele alınır.
Örneğin, tür özelliklerine sahip Kitap veya Film nesnelerini dizine eklemeyi düşünün.
Türler arasında "Bilim-Kurgu", "Bilim" ve "Kurgu" bulunabilir. exactMatchWithOperator
false
olarak ayarlandığında veya atlandığında, bir tür ararken ya da "Bilim" veya "Kurgu" özelliğini seçtiğinizde metin tokenlere ayrıldığı ve "Bilim" ile "Kurgu" jetonları "Bilim-Kurgu" içinde bulunduğundan "Bilim-Kurgu" sonuçları da döndürülür.
exactMatchWithOperator
, true
olduğunda metin tek bir jeton olarak değerlendirilir. Bu nedenle "Bilim" veya "Kurgu", "Bilim-Kurgu" ile eşleşmez.
(İsteğe bağlı) displayOptions
bölümünü ekleyin
Herhangi bir propertyDefinition
bölümünün sonunda isteğe bağlı bir displayOptions
bölümü bulunur. Bu bölümde bir displayLabel
dizesi bulunur.
displayLabel
, mülk için önerilen ve kullanıcı dostu bir metin etiketidir. Mülk, ObjectDisplayOptions kullanılarak görüntülenecek şekilde yapılandırılmışsa bu etiket mülkün önünde görüntülenir. Özellik görüntülü reklam için yapılandırılmışsa ve displayLabel
tanımlı değilse yalnızca özellik değeri görüntülenir.
Aşağıdaki snippet'te displayLabel
öğesi "Title" (Başlık) olarak ayarlanmış movieTitle
özelliği gösterilmektedir.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
Aşağıda, örnek şemadaki movie
nesnesinin tüm özellikleri için displayLabel
değerleri verilmiştir:
Özellik | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
(İsteğe bağlı) suggestionFilteringOperators[]
bölümü ekle
Herhangi bir propertyDefinition
bölümünün sonunda isteğe bağlı suggestionFilteringOperators[]
bölümü bulunur. Otomatik tamamlama önerilerini filtrelemek için kullanılan bir özelliği tanımlamak için bu bölümü kullanın. Örneğin, önerileri kullanıcının tercih ettiği film türüne göre filtrelemek için genre
operatörünü tanımlayabilirsiniz. Ardından kullanıcı arama sorgusunu yazdığında, otomatik tamamlama önerileri kapsamında yalnızca tercih ettiği türle eşleşen filmler gösterilir.
Şemanızı kaydetme
Yapılandırılmış verilerin Cloud Search sorgularından döndürülmesi için şemanızı Cloud Search şema hizmetine kaydetmeniz gerekir. Şema kaydetmek için Veri kaynağını başlatma adımında elde ettiğiniz veri kaynağı kimliği gerekir.
Veri kaynağı kimliğini kullanarak şemanızı kaydetmek için bir UpdateSchema isteği gönderin.
UpdateSchema referans sayfasında ayrıntılı olarak açıklandığı gibi, şemanızı kaydetmek için aşağıdaki HTTP isteğini gönderin:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
İsteğinizin gövdesinde aşağıdaki bilgiler bulunmalıdır:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
Şemanızın geçerliliğini, gerçekten kaydetmeden test etmek için validateOnly
seçeneğini kullanın.
Verilerinizi dizine ekleyin
Şemanız kaydedildikten sonra, Dizin çağrılarını kullanarak veri kaynağını doldurun. Dizine ekleme, normalde içerik bağlayıcınız içinde yapılır.
Film şeması kullanıldığında, tek bir film için REST API dizine ekleme isteği şöyle görünür:
{
"name": "datasource/<data_source_id>/items/titanic",
"acl": {
"readers": [
{
"gsuitePrincipal": {
"gsuiteDomain": true
}
}
]
},
"metadata": {
"title": "Titanic",
"sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [
{
"name": "movieTitle",
"textValues": {
"values": [
"Titanic"
]
}
},
{
"name": "releaseDate",
"dateValues": {
"values": [
{
"year": 1997,
"month": 12,
"day": 19
}
]
}
},
{
"name": "actorName",
"textValues": {
"values": [
"Leonardo DiCaprio",
"Kate Winslet",
"Billy Zane"
]
}
},
{
"name": "genre",
"enumValues": {
"values": [
"Drama",
"Action"
]
}
},
{
"name": "userRating",
"integerValues": {
"values": [
8
]
}
},
{
"name": "mpaaRating",
"textValues": {
"values": [
"PG-13"
]
}
},
{
"name": "duration",
"textValues": {
"values": [
"3 h 14 min"
]
}
}
]
}
},
"content": {
"inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
"contentFormat": "TEXT"
},
"version": "01",
"itemType": "CONTENT_ITEM"
}
objectType
alanındaki movie
değerinin şemadaki nesne tanımı adıyla nasıl eşleştiğine dikkat edin. Bu iki değeri eşleştiren Cloud Search, dizine ekleme sırasında hangi şema nesnesinin kullanılacağını bilir.
Ayrıca, releaseDate
şema mülkünün dizine eklenmesinin year
, month
ve day
alt özelliklerini nasıl kullandığını da unutmayın. Bu alt özellikleri devralır. Çünkü bu alt özellikler, tanımlamak için datePropertyOptions
kullanılarak date
veri türü olarak tanımlanır.
Bununla birlikte, year
, month
ve day
şemada tanımlı olmadığı için bu özelliklerden birine (ör. year
) tek tek ekleyin.
Ayrıca, tekrarlanabilir actorName
özelliğinin bir değer listesi kullanılarak nasıl dizine eklendiğine de dikkat edin.
Olası dizine ekleme sorunlarını belirleme
Şemalar ve dizine ekleme ile ilgili en yaygın iki sorun şunlardır:
Dizine ekleme isteğiniz, şema hizmetine kaydedilmemiş bir şema nesnesi veya özellik adı içeriyor. Bu sorun, özelliğin veya nesnenin yok sayılmasına neden olur.
Dizine ekleme isteğiniz, şemada kayıtlı olan türden farklı bir tür değerine sahip bir özelliğe sahip. Bu sorun, Cloud Search'ün dizine ekleme zamanında hata döndürmesine neden olur.
Şemanızı çeşitli sorgu türleriyle test etme
Şemanızı büyük bir üretim veri deposu için kaydetmeden önce daha küçük bir test verisi deposuyla test etmeyi düşünün. Daha küçük bir test deposuyla test etmek, daha büyük bir dizini veya mevcut bir üretim dizinini etkilemeden şemanızda hızlı bir şekilde düzenlemeler yapmanıza ve dizine eklenen verileri silmenize olanak tanır. Bir test veri deposu için yalnızca test kullanıcısını yetkilendiren bir EKL oluşturun. Böylece diğer kullanıcılar bu verileri Arama sonuçlarında görmeyecektir.
Arama sorgularını doğrulamak üzere bir arama arayüzü oluşturmak için Arama arayüzü bölümüne bakın.
Bu bölümde, bir film şemasını test etmek için kullanabileceğiniz birkaç farklı örnek sorgu bulunmaktadır.
Genel bir sorguyla test etme
Genel bir sorgu, veri kaynağında belirli bir dizeyi içeren tüm öğeleri döndürür. Bir arama arayüzü kullanarak, "titanic" kelimesini yazıp Return tuşuna basarak bir film veri kaynağına yönelik genel sorgu çalıştırabilirsiniz. "titanik" kelimesini içeren tüm filmlerin arama sonuçlarında döndürülmesi gerekir.
Bir operatörle test edin
Sorguya operatör eklenmesi, sonuçları bu operatör değeriyle eşleşen öğelerle sınırlandırır. Örneğin, belirli bir oyuncunun yer aldığı tüm filmleri bulmak için actor
operatörünü kullanmak isteyebilirsiniz. Arama arayüzü kullanırken, bu operatör sorgusunu "actor:Zane" gibi bir operator=value çifti yazıp Return tuşuna basarak gerçekleştirebilirsiniz. Zane'in oynadığı tüm filmler
arama sonuçlarında döndürülmelidir.
Şemanızı ayarlama
Şemanız ve verileriniz kullanıldıktan sonra, kullanıcılarınız için nelerin işe yarayıp yaramadığını izlemeye devam edin. Şemanızı aşağıdaki durumlara göre düzenlemeyi düşünebilirsiniz:
- Daha önce dizine eklenmemiş bir alan dizine ekleniyor. Örneğin, kullanıcılarınız yönetmen adına göre sürekli olarak film arayabilir. Bu nedenle şemanızı, yönetmen adını operatör olarak destekleyecek şekilde ayarlayabilirsiniz.
- Arama operatörü adlarını kullanıcı geri bildirimine göre değiştirme. Operatör adlarının kullanıcı dostu olması amaçlanmıştır. Kullanıcılarınız sürekli olarak yanlış operatör adını "hatırlıyorsa" bu adı değiştirmeyi düşünebilirsiniz.
Şema değişikliğinden sonra yeniden dizine ekleme
Şemanızda aşağıdaki değerlerden herhangi birini değiştirmek, verilerinizi yeniden dizine eklemenizi gerektirmez. Yeni bir UpdateSchema isteği gönderdiğinizde dizininiz çalışmaya devam eder:
- Operatör adları.
- Minimum ve maksimum tam sayı değerleri.
- Tam sayı ve enum sıralı sıralama.
- Güncellik seçenekleri.
- Görüntüleme seçenekleri.
Aşağıdaki değişikliklerde, daha önce dizine eklenen veriler daha önce kaydedilmiş şemaya göre çalışmaya devam eder. Ancak, aşağıdaki değişiklikler söz konusuysa güncellenmiş şemaya dayalı değişiklikleri görmek için mevcut girişleri yeniden dizine eklemeniz gerekir:
- Yeni bir mülk veya nesne ekleme ya da kaldırma
isReturnable
,isFacetable
veyaisSortable
değerininfalse
yerinetrue
olarak değiştirilmesi.
isFacetable
veya isSortable
değerini yalnızca net bir kullanım alanınız ve ihtiyacınız varsa true
olarak ayarlamanız gerekir.
Son olarak, bir özelliği isSuggestable
işaretleyerek şemanızı güncellediğinizde verilerinizi yeniden dizine eklemeniz gerekir. Bu durum, söz konusu mülk için otomatik tamamlamanın kullanımında gecikmeye neden olur.
İzin verilmeyen özellik değişiklikleri
Bazı şema değişiklikleri, dizini kıracağı veya yetersiz ya da tutarsız arama sonuçları üreteceği için verilerinizi yeniden dizine ekleseniz bile izin verilmez. Bunlar arasında aşağıdaki değişiklikler yer alır:
- Mülk veri türü.
- Mülk adı.
exactMatchWithOperator
ayarı.retrievalImportance
ayarı.
Ancak bu sınırlamayı aşmanın bir yolu vardır.
Karmaşık bir şema değişikliği yapma
Kötü arama sonuçları veya bozuk bir arama dizini oluşturacak değişiklikleri önlemek için Cloud Search, depo dizine eklendikten sonra UpdateSchema isteklerinde belirli tür değişiklikleri engeller. Örneğin, bir mülkün veri türü veya adı, ayarlandıktan sonra değiştirilemez. Verilerinizi yeniden dizine ekleseniz bile bu değişiklikler, basit bir UpdateSchema isteğiyle gerçekleştirilemez.
Şemanızda başka şekilde izin verilmeyen bir değişiklik yapmanız gerektiğinde, genellikle aynı etkiyi elde etmek için bir dizi izin verilen değişiklik yapabilirsiniz. Genel olarak bu işlem, öncelikle dizine eklenen özelliklerin eski bir nesne tanımından yenisine taşınmasını ve ardından yalnızca yeni mülkü kullanan bir dizine ekleme isteğinin gönderilmesini içerir.
Aşağıdaki adımlarda bir mülkün veri türünün veya adının nasıl değiştirileceği gösterilmektedir:
- Şemanızdaki nesne tanımına yeni bir özellik ekleyin. Değiştirmek istediğiniz mülkten farklı bir ad kullanın.
- UpdateSchema isteğini yeni tanımla gönderin. Yeni ve eski mülk dahil şemanın tamamını istekte göndermeyi unutmayın.
Veri deposundaki dizini doldurun. Dizini doldurmak için tüm dizine ekleme isteklerini yeni özelliği kullanarak gönderin ancak eski özelliği değil. Bu durum, sorgu eşleşmelerinin iki kez sayılmasına neden olur.
- Dizine ekleme dolgusu sırasında yeni özelliği kontrol edin ve tutarsız davranıştan kaçınmak için varsayılan olarak eski mülkü kullanın.
- Dolgu tamamlandıktan sonra, doğrulamak için test sorguları çalıştırın.
Eski mülkü silin. Eski mülk adı olmadan başka bir UpdateSchema isteği gönderin ve gelecekteki dizine ekleme isteklerinde eski mülk adının kullanımını sonlandırın.
Eski mülkün tüm kullanımlarını yeni mülke taşıyın. Örneğin, özellik adını "oluşturan" yerine yazar olarak değiştirirseniz sorgu kodunuzu, daha önce içerik oluşturucuya referans verdiği yerde yazarı kullanacak şekilde güncellemeniz gerekir.
Cloud Search, beklenmedik dizine ekleme sonuçlarına neden olabilecek yeniden kullanımlara karşı koruma sağlamak için, silinen herhangi bir mülkün veya nesnenin kaydını 30 gün boyunca saklar. Bu 30 gün içinde, silinen nesne veya mülkün tüm kullanımlarından geçiş yapmanız ve bunları gelecekteki dizin isteklerinden hariç tutmanız gerekir. Bu, daha sonra söz konusu özelliği veya nesneyi yeniden etkinleştirmeye karar verirseniz bunu dizininizin doğruluğunu koruyacak şekilde yapmanızı sağlar.
Boyut sınırlamalarını bilin
Cloud Search, yapılandırılmış veri nesnelerinin ve şemaların boyutlarına sınırlar uygular. Bu sınırlar şunlardır:
- Maksimum üst düzey nesne sayısı 10 nesnedir.
- Yapılandırılmış veri hiyerarşisinin maksimum derinliği 10 düzeydir.
- Bir nesnedeki toplam alan sayısı 1.000 ile sınırlıdır. Bu sayı, temel alan sayısı artı iç içe yerleştirilmiş her bir nesnedeki alanların toplam sayısını içerir.
Sonraki adımlar
Atabileceğiniz sonraki adımlardan bazıları şunlardır:
Şemanızı test etmek için bir arama arayüzü oluşturun.
Arama kalitesini iyileştirmek için şemanızı ayarlayın.
Şirketinizde yaygın olarak kullanılan terimlerin eş anlamlılarını tanımlamak için
_dictionaryEntry
şemasından nasıl yararlanacağınızı öğrenin._dictionaryEntry
şemasını kullanmak için Eş anlamlıları tanımlama bölümüne bakın.Bir bağlayıcı oluşturun.