Şema oluşturma ve kaydetme

Google Cloud Search şeması, verilerinizi dizine eklerken ve sorgulamada 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 göre verileri yapılandırıp dizine ekler.

API'ye JSON şema nesnesi sağlayarak ve ardından bunu kaydederek bir şema oluşturabilirsiniz. Verilerinizi dizine eklemeden önce depolarınızın her biri için bir şema nesnesi kaydetmeniz gerekir.

Bu dokümanda, şema oluşturma ile ilgili temel bilgiler yer almaktadır. Arama deneyimini iyileştirmek üzere şemanızı nasıl ayarlayacağınız hakkında bilgi için Arama kalitesini iyileştirme konusuna bakın.

Şema oluşturun

Aşağıda, Cloud Search şemanızı oluşturmak için kullanılan adımların bir listesi yer almaktadır:

  1. Beklenen kullanıcı davranışını belirleme
  2. Veri kaynağını başlatma
  3. Şema oluşturma
  4. Örnek şemayı tamamlama
  5. Şemanızı kaydetme
  6. Verilerinizi dizine ekleme
  7. Şemanızı test etme
  8. Şemanızı ayarlama
sayfasını ziyaret edin.

Beklenen kullanıcı davranışını belirleme

Kullanıcılarınızın yapacağı sorgu türlerini tahmin etmek, stratejinizi şemanızı oluşturmaya yönlendirmeye yardımcı olur.

Örneğin, bir film veritabanına yönelik sorgu yayınlarken kullanıcının "Roman Redford'ın yer aldığı tüm filmleri göster" gibi bir sorgu yapacağını tahmin edebilirsiniz. Bu nedenle, şemanız "belirli bir oyuncunun yer aldığı tüm filmler"e dayalı sorgu sonuçlarını desteklemelidir.

Şemanızı kullanıcınızın davranış kalıplarını yansıtacak şekilde tanımlamak için şu görevleri gerçekleştirmeyi düşünebilirsiniz:

  1. Farklı kullanıcılardan gelen çeşitli sorguları değerlendirme
  2. Sorgularda kullanılabilecek nesneleri tanımlayın. Nesneler, film veritabanındaki bir film gibi ilgili verilerin mantıksal kümeleridir.
  3. Nesneyi oluşturan ve sorgularda kullanılabilecek özellik ve değerleri tanımlayın. Özellikler, nesnenin dizine eklenebilir özellikleridir. Temel değerleri veya diğer nesneleri içerebilir. Örneğin, bir film nesnesi temel değerler olarak filmin adı ve yayın tarihi gibi özelliklere sahip olabilir. Film nesnesi, adları veya rolleri gibi kendi özellikleri olan oyuncu gibi başka nesneleri de içerebilir.
  4. Tesisler için geçerli değer örnekleri belirleyin. Değerler, bir mülk için dizine eklenen gerçek verilerdir. Örneğin, veritabanınızdaki filmlerden birinin adı "Kayıp Gemi Avcıları" olabilir.
  5. 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 sıralama yapmak ve kitle derecelendirmesine göre sıralama yapmak isteyebilir ve başlığa göre alfabetik olarak sıralama yapmak zorunda kalmaz.
  6. (isteğe bağlı) Mülklerinizden birinin, aramaların yürütülebileceği iş rolü veya departman gibi daha belirli bir bağlamı temsil edip etmediğini göz önünde bulundurun. Böylece, otomatik tamamlama önerileri bağlama göre sağlanabilir. Örneğin, bir film veritabanını arayan kullanıcılar yalnızca belirli bir film türüyle ilgileniyor olabilir. Kullanıcılar, büyük olasılıkla kullanıcı profillerinin bir parçası olarak aramalarının hangi türü döndürmesini istediklerini tanımlarlar. Ardından, kullanıcı film sorgusu yazmaya başladığında, otomatik tamamlama önerilerinin bir parçası olarak yalnızca tercih ettiği türdeki "aksiyon filmleri" gibi filmler önerilir.
  7. Bu nesnelerin, özelliklerin ve aramalarda kullanılabilecek ö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ı ilk kullanıma hazırlayın

Veri kaynağı, dizine eklenmiş ve Google Cloud'da depolanan bir depodaki verileri temsil eder. Bir veri kaynağını başlatma talimatları için Üçüncü taraf veri kaynaklarını yönetme bölümüne 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

Şemadaki verilerin temel birimi nesne ve "şema nesnesi" olarak da adlandırılır ve verilerin mantıksal yapısıdır. Filmler veritabanındaki mantıksal yapılardan biri "film"dir. Bir diğer nesne de filmde yer alan oyuncu ve ekibi temsil edecek "kişi" olabilir.

Şemadaki her nesnenin, nesneyi tanımlayan bir dizi özelliki veya özelliği vardır. Örneğin, bir filmin başlığı ve süresi ya da kişinin adı ve doğum tarihi belirtilmektedir. 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.

Varlıklar arasındaki şema bağlantılarını gösteren çizim
Şekil 1. İki nesne ve bir alt nesneyi gösteren örnek bir şema.

Cloud Search şeması aslında objectDefinitions etiketi içinde tanımlanan nesne tanımı ifadelerinin bir listesidir. Aşağıdaki şema snippet'i, film ve kişi şeması nesneleri için objectDefinitions ifadelerini göstermektedir.

{
  "objectDefinitions": [
    {
      "name": "movie",
      ...
    },
    {
      "name": "person",
      ...
    }
  ]
}

Bir şema nesnesi tanımladığınızda, ş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 (ör. bir film nesnesi için movie) kullanırsınız. Şema hizmeti, dizine eklenebilir nesneler için anahtar tanımlayıcısı olarak name alanını kullanır. name alanı hakkında daha fazla bilgi için Nesne Tanımı'na bakın.

Nesne özelliklerini tanımlama

ObjectDefinition referansında belirtildiği gibi, nesne adının ardından bir options grubu ve propertyDefinitions listesi gelir. options şunları da içerebilir: freshnessOptions ve displayOptions. freshnessOptions, arama sıralamasını öğenin güncelliğine göre ayarlamak için kullanılır. displayOptions, belirli etiketlerin ve özelliklerin bir nesnenin arama sonuçlarında görüntülenip görüntülenmeyeceğini tanımlamak için kullanılır.

propertyDefinitions bölümünde, film başlığı ve yayın tarihi gibi nesnenin özelliklerini tanımlarsınız.

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 ilişkili türe özel seçenekleri (ör. önceki snippet'teki textPropertyOptions ve retrievalImportance).
  • Mülkün bir arama operatörü olarak nasıl kullanıldığını açıklayan operatorOptions.
  • Önceki snippet'teki displayLabel gibi bir veya daha fazla displayOptions.

Bir özelliğin name öğesi, kapsayıcı nesne içinde benzersiz olmalıdır ancak aynı ad diğer nesne ve alt nesnelerde kullanılabilir. Şekil 1'de filmin başlığı ve yayın tarihi bir kez movie nesnesinde ve tekrar person nesnesinin filmography alt nesnesinde olmak üzere iki kez tanımlanmıştır. Bu şema, şemanın iki tür arama davranışını destekleyebilmesi için movieTitle alanını yeniden kullanır:

  • Kullanıcılar bir filmin başlığını aradığında film sonuçlarını gösterin.
  • Kullanıcılar bir oyuncunun oynadığı filmin başlığını aradığında kişi sonuçlarını göster.

Benzer şekilde şema, iki movieTitle alanı için aynı anlama sahip olduğundan releaseDate alanını yeniden kullanır.

Kendi şemanızı geliştirirken deponuzda, şemanızda birden fazla kez tanımlamak istediğiniz verileri içeren ilgili alanların nasıl olabileceğini düşünün.

Türden bağımsız seçenekler ekleme

PropertyDefinition'nda, veri türüne bakılmaksızın tüm mülklerde yaygın olarak kullanılan genel arama işlevi seçenekleri listelenmektedir.

  • 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ürülebilir. Döndürülemez mülkler, kullanıcıya döndürülmeden arama yapmak veya sonuçları 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 tek bir yayın tarihi vardır, ancak birden fazla aktörü olabilir.
  • isSortable - Özelliğin sıralama için kullanılabileceğini belirtir. Bu, tekrarlanabilir mülkler için doğru olamaz. Örneğin, film sonuçları yayın tarihine veya kitle puanına göre sıralanabilir.
  • isFacetable - Mülkün, facets oluşturmak için kullanılabileceğini belirtir. Façetalar, arama sonuçlarını hassaslaştırmak için kullanılır. Bu sayede 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ği ayarlamak için isReturnable doğru olmalıdır. Son olarak, bu seçenek yalnızca enum, boole ve metin özellikleri için desteklenir. Örneğin, örnek şemamızda genre, actorName, userRating ve mpaaRating özelliklerini arama sonuçlarını etkileşimli olarak ayrıntılandırmak için kullanılmalarını sağlayacak şekilde hazırlayabiliriz.
  • isWildcardSearchable, kullanıcıların bu mülk için joker karakterle arama yapabileceğini belirtir. Bu seçenek yalnızca metin özelliklerinde kullanılabilir. Metin alanında joker karakterle arama özelliğinin çalışma şekli, exactMatchWithOperator alanında ayarlanan değere bağlıdır. exactMatchWithOperator, true olarak ayarlanırsa metin değeri bir atomik değer olarak jetona dönüştürülür ve buna karşılık joker karakter araması gerçekleştirilir. Örneğin, metin değeri science-fiction ise science-* joker karakter sorgusu bu değerle eşleşir. exactMatchWithOperator, false olarak ayarlanırsa metin değeri tokenlere ayrılır ve her jeton için joker karakter araması gerçekleştirilir. Örneğin, metin değeri "bilim kurgu" ise sci* veya fi* joker karakter sorguları öğeyle eşleşir, ancak science-* eşleşmez.

Bu genel arama işlevi parametrelerinin tümü boole değerleridir. Bunların tümü varsayılan olarak false değerine sahiptir ve kullanılabilmesi için true olarak ayarlanmalıdır.

Aşağıdaki tabloda, movie nesnesinin tüm özellikleri için true olarak ayarlanmış 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 aktörü olabileceği için hem genre hem de actorName için isRepeatable, true olarak ayarlanmıştır. Tekrarlanabilir özellikte veya tekrarlanabilir bir alt nesnede yer alan özellikler sıralanamaz.

Türü tanımlayın

PropertyDefinition referans bölümünde ise xx değeri boolean gibi belirli bir tür olan birçok 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ımlamak, söz konusu mülkün veri türünü belirler. Örneğin, movieTitle özelliği için textPropertyOptions tanımlanması, film başlığının metin türünde olduğunu gösterir. Aşağıdaki snippet, textPropertyOptions tarafından veri türünün ayarlandığı movieTitle özelliğini göstermektedir.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    ...
  },
  ...
},

Bir mülkte yalnızca bir ilişkilendirilmiş veri türü olabilir. Örneğin, film şemamızda releaseDate yalnızca bir tarih (ör. 2016-01-13) veya bir dize (ör. January 13, 2016), ancak her ikisi birden kullanılamaz.

Örnek film şemasındaki mülklere ilişkin veri türlerini belirtmek için kullanılan veri türü nesneleri şunlardır:

Özellik Veri türü nesnesi
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ınıza bağlıdır. Bu film şemasının hayali senaryosunda, kullanıcıların sonuçları kronolojik olarak sıralamak istemesi 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 faydalı olabilir.

Türe özel seçenekleri yapılandırma

PropertyDefinition referans bölümü, her türe ait seçeneklerin bağlantılarını içerir. enumPropertyOptions içindeki possibleValues listesi hariç, çoğu türe özel 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, veri türünü ayarlayan textPropertyOptions ve retrievalImportance türüne özel seçenekle movieTitle özelliği gösterilmektedir.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    ...
  },
  ...
}

Örnek şemada kullanılan, türe özgü 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ımlama

Her türde, türe özel seçeneklere ek olarak bir dizi isteğe bağlı 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ü textPropertyOptions ayarlayan movieTitle mülkü ve retrievalImportance ile operatorOptions türüne özel seçenekler gösterilmektedir.

{
  "name": "movieTitle",
  "isReturnable": true,
  "isWildcardSearchable": true,
  "textPropertyOptions": {
    "retrievalImportance": { "importance": "HIGHEST" },
    "operatorOptions": {
      "operatorName": "title"
    }
  },
  ...
}

Her operatorOptions bir operatorName içerir. Örneğin, movieTitle için title. Operatör adı, tesisin arama operatörüdür. Arama operatörü, kullanıcılardan bir aramayı daraltırken kullanmalarını beklediğiniz gerçek parametredir. Örneğin, kullanıcı başlıklarına göre filmleri aramak için title:movieName yazar. Burada movieName, filmin adıdır.

Operatör adlarının, tesis adıyla aynı olması gerekmez. Bunun yerine, kuruluşunuzdaki kullanıcılar tarafından en sık kullanılan kelimeleri yansıtan operatör adlarını 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. Sorgu sırasında bir 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 plot değerine sahip olduğunu varsayalım. Bu özelliklerin ikisi de metin (textPropertyOptions) olduğu sürece, plot arama operatörünün kullanıldığı tek bir sorgu bunların ikisini de alır.

operatorName özelliğine ek olarak, sıralanabilir özelliklerde operatorOptions içinde lessThanOperatorName ve greaterThanOperatorName alanları bulunabilir. Kullanıcılar, gönderilen bir değerle karşılaştırmalara dayalı sorgular oluşturmak için bu seçenekleri kullanabilir.

Son olarak, textOperatorOptions öğesinin operatorOptions içinde bir exactMatchWithOperator alanı vardır. exactMatchWithOperator öğesini true olarak ayarlarsanız sorgu dizesi yalnızca metinde bulunmalı, mülk değerinin tamamıyla eşleşmelidir. Metin değeri, operatör aramalarında ve özellik eşleşmelerinde tek bir atom değeri 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" yer alabilir. exactMatchWithOperator değeri false olarak ayarlandığında veya atlandığında, bir türü aramak ya da "Bilim" ya da "Kurgu" özelliğini seçmek, metin jetonlara ayrıldığından ve "Bilim-Kurgu" içinde "Bilim" ve "Kurgu" jetonları mevcut olduğundan "Bilim" veya "Kurgu" façetasını da döndürür. exactMatchWithOperator değeri true olduğunda metin tek bir jeton olarak kabul edilir. Dolayısıyla "Bilim" veya "Kurgu", "Bilim-Kurgu" ile eşleşmez.

(İsteğe bağlı) displayOptions bölümünü ekleyin

Tüm propertyDefinition bölümlerinin sonunda isteğe bağlı displayOptions bölümü bulunur. Bu bölümde bir displayLabel dizesi var. displayLabel, tesis için önerilen ve kullanıcı dostu bir metin etiketidir. Özellik, ObjectDisplayOptions kullanılarak görüntülenecek şekilde yapılandırılmışsa bu etiket mülkün önünde gösterilir. Özellik görüntüleme için yapılandırılmışsa ve displayLabel tanımlanmamışsa yalnızca özellik değeri gösterilir.

Aşağıdaki snippet'te, displayLabel değeri "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ü ekleyin

Tüm propertyDefinition bölümlerinin sonunda isteğe bağlı bir suggestionFilteringOperators[] bölümü bulunur. Otomatik tamamlama önerilerini filtrelemek için kullanılacak bir özellik tanımlamak için bu bölümden yararlanı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 önerilerinin bir parçası olarak yalnızca tercih ettiği türle eşleşen filmler gösterilir.

Şemanızı kaydetme

Cloud Search sorgularından yapılandırılmış veri 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ığı şekilde, ş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ı gerçekten kaydettirmeden geçerliliğini 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 gerçekleştirilir.

Film şemasını kullanarak 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. Cloud Search, bu iki değeri eşleştirerek dizine ekleme sırasında hangi şema nesnesinin kullanılacağını bilir.

Şema özelliğinin releaseDate dizine eklenmesinde, year, month ve day alt mülklerinin, date datePropertyOptions kullanarak tanımlamak için veri türü olarak tanımlandığından devraldığı alt özellikleri nasıl kullandığına da dikkat edin. Ancak year, month ve day şemada tanımlanmadığından bu özelliklerden biri (ör. year) ayrı ayrı gösterilir.

Ayrıca, tekrarlanabilir actorName özelliğinin bir değer listesi kullanılarak nasıl dizine eklendiğini de unutmayın.

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 kayıtlı olmayan bir şema nesnesi veya özellik adı içeriyor. Bu sorun, özelliğin veya nesnenin yoksayılmasına neden olur.

  • Dizine ekleme isteğinizde, şemada kaydedilen türden farklı bir tür değerine sahip özellik bulunuyor. Bu sorun, Cloud Search'ün dizine ekleme sırası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 veri deposuyla test yapmayı düşünün. Daha küçük bir test deposuyla test yapmak, şemanızda hızlı bir şekilde düzenlemeler yapmanıza ve dizine eklenen verileri, daha büyük bir dizini veya mevcut bir üretim dizinini etkilemeden silmenize olanak tanır. Test veri deposu için yalnızca bir test kullanıcısına yetki veren 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 bkz. Arama arayüzü

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 sorgu, veri kaynağındaki belirli bir dizeyi içeren tüm öğeleri döndürür. Arama arayüzü kullanırken "titanic" kelimesini yazıp "titanic" tuşuna basarak film veri kaynağı için genel sorgu çalıştırabilirsiniz. Arama sonuçlarında "titanik" kelimesini içeren tüm filmler döndürülür.

Bir operatörle test edin

Sorguya bir operatör eklediğinizde, sonuçlar bu operatör değeriyle eşleşen öğelerle sınırlanır. Örneğin, belirli bir oyuncunun yer aldığı tüm filmleri bulmak için actor operatörünü kullanmak isteyebilirsiniz. Arama arayüzü kullanarak bu operatör sorgusunu "actor:Zane" gibi bir operator=value çifti yazıp Return tuşuna basarak gerçekleştirebilirsiniz. Zane'in aktör olduğu 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. Aşağıdaki durumlar için şemanızı ayarlamayı değerlendirmeniz gerekir:

  • 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ı operatör olarak yönetmen adını destekleyecek şekilde ayarlayabilirsiniz.
  • Kullanıcı geri bildirimine göre arama operatörü adlarını değiştirme. Operatör adlarının kullanıcı dostu olması gerekir. Kullanıcılarınız yanlış operatör adını sürekli "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öndermeniz yeterlidir. Dizininiz çalışmaya devam eder:

  • Operatör adları.
  • Tam sayı minimum ve maksimum 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, önceden dizine eklenen veriler daha önce kaydedilmiş şemaya göre çalışmaya devam edecek. Ancak, güncellenmiş şemada aşağıdaki değişikliklere sahip olması durumunda, bu 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
  • false olan isReturnable, isFacetable veya isSortable, true olarak değiştiriliyor.

Yalnızca net bir kullanım alanınız ve ihtiyacınız varsa isFacetable veya isSortable değerini true olarak ayarlamanız gerekir.

Son olarak, isSuggestable özelliğini işaretleyerek şemanızı güncellediğinizde, verilerinizi yeniden dizine eklemeniz gerekir. Bu, söz konusu mülk için otomatik tamamlamanın kullanımında gecikmeye neden olur.

İzin verilmeyen özellik değişiklikleri

Verilerinizi yeniden dizine ekleseniz bile, dizini bozacağı veya kötü ya da tutarsız arama sonuçları üreteceği için bazı şema değişikliklerine izin verilmez. Aşağıdaki değişiklikler bu kapsamdadır:

  • Tesis 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

Cloud Search, kötü arama sonuçları veya bozuk bir arama dizini oluşturacak değişiklikleri önlemek için depo dizine eklendikten sonra UpdateSchema isteklerinde belirli türde 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 bir şekilde izin verilmeyen bir değişiklik yapmanızın gerektiği durumlarda, genellikle aynı etkiye sahip bir dizi izin verilen değişiklik yapabilirsiniz. Genel olarak bu, dizine eklenen mülklerin eski bir nesne tanımından yenisine taşınması ve ardından yalnızca yeni mülkü kullanan bir dizine ekleme isteği 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:

  1. Şemanızdaki nesne tanımına yeni bir özellik ekleyin. Değiştirmek istediğiniz mülkten farklı bir ad kullanın.
  2. UpdateSchema isteğini yeni tanımı kullanarak gönderin. İstekte hem yeni hem de eski özellik de dahil olmak üzere şemanın tamamını göndermeyi unutmayın.
  3. Dizini veri deposundan doldurun. Dizini doldurmak için sorgu eşleşmelerinin iki kez sayılmasına yol açacağından, eski mülkü değil, tüm dizine ekleme isteklerini yeni özelliği kullanarak gönderin.

    1. Dolguyu dizine ekleme sırasında yeni mülkü kontrol edin ve tutarsız davranıştan kaçınmak için varsayılan olarak eski mülkü kullanın.
    2. Dolgu tamamlandıktan sonra, doğrulamak için test sorguları çalıştırın.
  4. Eski mülkü silin. Eski mülk adını içermeyen başka bir UpdateSchema isteği gönderin ve gelecekteki dizine ekleme isteklerinde eski mülk adını kullanmayı bırakın.

  5. Eski mülke ilişkin tüm kullanımları yeni mülke taşıyın. Örneğin, özellik adını içerik üretici yerine yazar olarak değiştirirseniz sorgu kodunuzu daha önce oluşturucuya atıfta bulunduğu 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 tüm mülklerin veya nesnelerin kaydını 30 gün boyunca saklar. Bu 30 gün içinde, silinen nesne veya mülk kullanımını gelecekteki dizin isteklerinden hariç tutmak da dahil olmak üzere tüm kullanımlarını sonlandırmalısınız. Bu sayede, daha sonra ilgili özelliği veya nesneyi yeniden etkinleştirmeye karar verirseniz, bunu dizininizin doğruluğunu koruyacak şekilde yapabilirsiniz.

Boyut sınırlamaları

Cloud Search, yapılandırılmış veri nesnelerinin ve şemaların boyutuna sınırlama getirir. Bu sınırlar şu şekildedir:

  • Maksimum üst düzey nesne sayısı 10 nesnedir.
  • Yapılandırılmış bir veri hiyerarşisinin maksimum derinliği 10 düzeydir.
  • Bir nesnedeki toplam alan sayısı 1.000 ile sınırlıdır. Bu sınır, temel alanların sayısı ile iç içe yerleştirilmiş her nesnedeki alan sayısının toplamını içerir.

Sonraki adımlar

Atabileceğiniz sonraki adımlardan bazıları şunlardır:

  1. Şemanızı test etmek için bir arama arayüzü oluşturun.

  2. Arama kalitesini iyileştirmek için şemanızı ayarlayın.

  3. En iyi sorgu yorumlaması için bir şema yapılandırın.

  4. Ş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.

  5. Bir bağlayıcı oluşturun.