Şema oluşturma ve kaydetme

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:

  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ına bakın.

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:

  1. Farklı kullanıcılardan istenen çeşitli sorguları değerlendirin.
  2. Sorgularda kullanılabilecek nesneleri tanımlayın. Nesneler, filmlerden oluşan bir veritabanındaki film gibi ilgili verilerin mantıksal kümeleridir.
  3. 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.
  4. 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.
  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 ve kitle derecelendirmesine göre sıralama yapmak isteyebilir ve başlığa göre alfabetik olarak sıralamaları gerekmez.
  6. (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.
  7. 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.

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

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 ve retrievalImportance 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 fazla displayOptions.

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ç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 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ğeri science-fiction ise joker karakter sorgusu science-* 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 sorgusu sci* veya fi* ile eşleşir, ancak science-* öğ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 veya isSortable değerinin false yerine true 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:

  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ımla gönderin. Yeni ve eski mülk dahil şemanın tamamını istekte göndermeyi unutmayın.
  3. 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.

    1. 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.
    2. Dolgu tamamlandıktan sonra, doğrulamak için test sorguları çalıştırın.
  4. 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.

  5. 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:

  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 uygun sorgu yorumu 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.