Dizin oluşturma (Azure Bilişsel Arama REST API)

Dizin , bir tablonun bir veritabanındaki kayıtları nasıl düzenlediğinde benzer şekilde, Azure bilişsel arama 'da belge düzenleme ve arama işlemlerinin birincil yöntemidir. Her dizin, dizin şemasına (alan adları, veri türleri ve öznitelikler) uyan bir belge koleksiyonu içerir, ancak dizinler aynı zamanda diğer arama davranışlarını tanımlayan ek yapılar (öneri araçları, Puanlama profilleri ve CORS yapılandırması) belirler.

İstek üzerine ya GÖNDERI ya da PUT kullanabilirsiniz. Bunlardan biri için, istek gövdesinde JSON belgesi, nesne tanımını sağlar.

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

Alternatif olarak, PUT ' i kullanabilir ve URI üzerinde dizin adı belirtebilirsiniz.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

Tüm hizmet istekleri için HTTPS gereklidir. Dizin yoksa, oluşturulur. Zaten varsa, yeni tanıma güncelleştirilir.

Dizin oluşturmak şemayı ve meta verileri oluşturur. Dizinin doldurulması ayrı bir işlemdir. Bu adım için Dizin Oluşturucu (bkz. Dizin Oluşturucu işlemleri, desteklenen veri kaynakları için kullanılabilir) veya belge ekleme, güncelleştirme veya silme belgelerikullanabilirsiniz. Ters dizinler, belgeler gönderildiğinde oluşturulur.

Not

Oluşturabileceğiniz maksimum dizin sayısı fiyatlandırma katmanına göre farklılık gösterir. Daha fazla bilgi için bkz. hizmet limitleri.

URI Parametreleri

Parametre Açıklama
hizmet adı Gereklidir. Bunu, arama hizmetinizin benzersiz, Kullanıcı tanımlı adı olarak ayarlayın.
Dizin adı PUT kullanılıyorsa URI üzerinde gereklidir. Ad küçük harf olmalıdır, bir harf veya sayıyla başlamalı, eğik çizgi veya nokta içermemelidir ve 128 karakterden kısa olmalıdır. Adı bir harf veya sayıyla başlattıktan sonra, tireler ardışık olmadığı sürece adın geri kalanı herhangi bir harf, sayı ve kısa çizgi içerebilir.
api-sürümü Gereklidir. Geçerli kararlı sürüm api-version=2020-06-30 . Daha fazla sürüm için bkz. API sürümleri .

İstek Üst Bilgileri

Aşağıdaki tabloda gerekli ve isteğe bağlı istek üstbilgileri açıklanmaktadır.

Alanlar Açıklama
İçerik Türü Gereklidir. Bunu olarak ayarla application/json
api anahtarı Gereklidir. , api-key Arama hizmetinize yönelik isteğin kimliğini doğrulamak için kullanılır. Bu, hizmetinize özgü bir dize değeridir. Oluşturma istekleri, api-key yönetici anahtarınıza (bir sorgu anahtarından farklı olarak) bir başlık kümesi içermelidir. API anahtarını , arama hizmeti panonuzda Azure Portal bulabilirsiniz.

İstek Gövdesi

İsteğin gövdesi, bu dizine besleyecek belgeler içindeki veri alanlarının listesini içeren bir şema tanımı içerir.

Aşağıdaki JSON, tanımın ana bölümlerinin üst düzey bir gösterimidir.

{  
  "name": (optional on PUT; required on POST) "Name of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ] (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
    }
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

İstek aşağıdaki özellikleri içerir:

Özellik Açıklama
name Gereklidir. Dizinin adı. Dizin adı yalnızca küçük harf, rakam veya kısa çizgi içermelidir, kısa çizgi ile başlayamaz veya bitemez ve 128 karakterle sınırlıdır.
açıklama İsteğe bağlı bir açıklama.
alanını Gereklidir. Ad, veri türü ve ilgili alanda izin verilen eylemleri tanımlayan öznitelikler de dahil olmak üzere, bu dizine bir alan koleksiyonu gönderilir. Veri türleri Varlık Veri Modeli (EDM) ile uyumlu. Daha fazla bilgi için bkz. desteklenen veri türleri. Koleksiyonda anahtar alanı olarak belirtilen bir alan olmalıdır. Bir dize alanı olmalıdır. Bu alan, dizin ile depolanan her belge için bazen belge KIMLIĞI olarak adlandırılan benzersiz tanımlayıcıyı temsil eder. Belge anahtarları büyük/küçük harfe duyarlıdır. Örneğin, "abc" anahtarına sahip bir belge, "ABC" anahtarına sahip bir belgeden farklı kabul edilir.
liği İsteğe bağlı. 15 Temmuz 2020 tarihinden önce oluşturulan hizmetler için, bu özelliği BM25 derecelendirme algoritmasını kullanacak şekilde ayarlayın. Geçerli değerler "#Microsoft.Azure.Search.ClassicSimilarity" veya içerir "#Microsoft.Azure.Search.BM25Similarity" . Bu özelliği destekleyen API sürümleri 2020-06-30 ve 2019-05-06-Preview ' i içerir. Daha fazla bilgi için bkz. Azure bilişsel arama 'de derecelendirme algoritmaları.
Öneri araçları İsteğe bağlı. Dizin başına bir tane olmak üzere, oto tamamlanmış sorgular veya önerilen arama sonuçları için kullanılır. Otomatik tamamlama ve öneriler gibi kısmi sorgularda eşleşen ön ekleri depolayan bir veri yapısıdır. , name Oto tamamlanmış sorgular ve önerilen sonuçlar için içerik sağlayan bir ve öneri aracı-Aware alanlarından oluşur. searchMode gereklidir ve her zaman olarak ayarlanır analyzingInfixMatching . Bu, eşleşen sorgunun sorgu dizesindeki herhangi bir terimde olacağını belirtir.
scoringProfiles İsteğe bağlı. Özel arama Puanlama derecelendirmesi için kullanılır. defaultScoringProfileSorgu dizesinde özel bir profil belirtilmediğinde çağrılan, varsayılan olarak özel bir profil kullanmak üzere ayarlanır. Öğeler hakkında daha fazla bilgi için bkz. bir arama dizinine Puanlama profilleri ekleme ve sonraki bölümde örnek.
çözümleyiciler, charFilters, simgeler, tokenFilters İsteğe bağlı. Özel çözümleyicilertanımlıyorsanız, dizinin bu bölümlerini belirtin. Varsayılan olarak, bu bölümler null.
defaultScoringProfile İsteğe bağlı. Varsayılan Puanlama davranışlarının üzerine yazan özel bir Puanlama profilinin adı.
corsOptions İsteğe bağlı. Tarayıcı tüm çapraz kaynak isteklerini önleyediğinden, istemci tarafı JavaScript varsayılan olarak herhangi bir API 'yi çağıramaz. Dizininizdeki çapraz kaynak sorgularına izin vermek için corsOptions özniteliğini ayarlayarak CORS 'yi etkinleştirin (çıkış noktaları arası kaynak paylaşımı). Güvenlik nedenleriyle, yalnızca sorgu API 'Leri CORS 'yi destekler. corsOptionsBölüm şunları içerir:

allowedOrigins Istenir Dizininizdeki, her bir kaynağın genellikle protocol:// <fully-qualified-domain-name> : <port> (genellikle atlanmış olmasına rağmen) olduğu bir virgülle ayrılmış kaynak listesi <port> . Bu, bu kaynaklardan sunulan tüm JavaScript kodunun dizininizi sorgulayabileceği (doğru sağladığı varsayılarak) anlamına gelir api-key . Tüm kaynaklardan erişime izin vermek istiyorsanız * dizide tek bir öğe olarak belirtin allowedOrigins . Bu üretim için önerilmez, ancak geliştirme veya hata ayıklama için yararlı olabilir.

maxAgeInSeconds (İsteğe bağlı) Tarayıcılar CORS kontrol öncesi yanıtlarının önbelleğe alınma süresini (saniye olarak) belirlemek için bu değeri kullanır. Bu, negatif olmayan bir tamsayı olmalıdır. Bu değer ne kadar büyükse performans o kadar iyi olur, ancak CORS ilke değişikliklerinin geçerli olması o kadar uzun sürer. Ayarlanmazsa, varsayılan süre 5 dakikadır.
encryptionKey İsteğe bağlı. Eş anlamlı eşlemi, kendi anahtarlarınızı kullanarak şifrelemek için kullanılır ve Azure Key Vault. 2019-01-01'de veya sonrasında oluşturulan faturalanabilir arama hizmetleri için kullanılabilir.

Bölüm, kullanıcı tanımlı (gerekli), sistem tarafından oluşturulan encryptionKey (gerekli) ve anahtarı sağlayan (DNS adı olarak da adlandırılır) keyVaultKeyName keyVaultKeyVersion keyVaultUri içerir. Örnek bir URI " https://my-keyvault-name.vault.azure.net " olabilir.

İsteğe bağlı olarak, accessCredentials yönetilen sistem kimliği kullanmama olup olmadığını belirtesiniz. Dahil etmek (Azure Active Directory erişim izinleri verilen Uygulama Kimliği Azure Key Vault) ve (belirtilen Azure AD uygulamasının kimlik accessCredentials applicationId doğrulama applicationSecret anahtarı) özellikleri. Sonraki bölümde yer alan bir örnekte söz dizimi yer almaktadır.

Alan tanımları

Dizin oluşturulurken bir alanda aşağıdaki öznitelikler ayar olabilir.

Öznitelik Açıklama
name Gereklidir. Dizinin veya üst alanın alan koleksiyonu içinde benzersiz olması gereken alanın adını ayarlar.
tür Gereklidir. Alanın veri türünü ayarlar. Alanlar basit veya karmaşık olabilir. Basit alanlar, metin veya Edm.String tamsayılar gibi temel Edm.Int32 türlerdendir. Karmaşık alanların kendileri basit veya karmaşık olan alt alanlar olabilir. Bu, nesneleri ve nesne dizilerini modellemenize olanak sağlar ve bu da çoğu JSON nesne yapısını dizininize yüklemenizi sağlar. Desteklenen türlerin tam (Azure Bilişsel Arama) için bkz. Desteklenen veri türleri listesi.
anahtar Gereklidir. Bir alanın değerlerinin dizinde belgeleri benzersiz olarak tanımlay olduğunu belirlemek için bu özniteliği true olarak ayarlayın. Bir anahtar alanı için en fazla 1024 karakter uzunluğunda olmalıdır. Anahtar alanı olarak her dizinde tam olarak bir üst düzey alan seçilmelidir ve türünde olması Edm.String gerekir. Varsayılan, false basit alanlar ve karmaşık alanlar için null kullanılır.

Anahtar alanları, belgeleri doğrudan arama ve belirli belgeleri güncelleştirme veya silme için kullanılabilir. Anahtar alanların değerleri, belgelere bakarak veya dizine ayalarken büyük/küçük harfe duyarlı bir şekilde ele kullanılır. Ayrıntılar için bkz. (Azure Bilişsel Arama REST API) Arama ve Belge Ekleme, Güncelleştirme (Azure Bilişsel Arama REST API) Silme.
alınabilir Alanın bir arama sonucunda döndürülip döndürüle olmadığını gösterir. Bir alanı filtre, sıralama veya puanlama mekanizması olarak kullanmak ancak alanın son kullanıcıya görünür olması istemiyorsanız bu özniteliği false olarak ayarlayın. Bu öznitelik anahtar true alanlar için, karmaşık alanlar null için de bu öznitelikler için olması gerekir. Bu öznitelik mevcut alanlarda değiştirilebilir. alınabilir ayarı dizin true depolama gereksinimlerinde herhangi bir artışa neden olmaz. Varsayılan, true basit alanlar ve karmaşık alanlar için null kullanılır.
Aranabilir Alanın tam metin aranabilir olup olmadığını ve arama sorgularında başvurulabilir olup olmadığını gösterir. Bu, dizin oluşturma sırasında sözcük çözümlemesi gibi sözcük çözümlemesine tabi tutulacak anlamına gelir. Aranabilir bir alanı "Güneşli gün" gibi bir değere ayarsanız, dahili olarak normalleştirilmiş olur ve ayrı ayrı güneşli ve gün " " belirteçlerine " " ayrılır. Bu, bu terimler için tam metin aramalarına olanak sağlar. veya türünde Edm.String alanlar varsayılan olarak Collection(Edm.String) aranabilir. Bu öznitelik, diğer dize olmayan veri türlerinin basit alanları için ve karmaşık false alanlar null için olmalıdır.

Aranabilir bir alan dizininize fazladan alan Azure Bilişsel Arama bu alanların içeriğini işleyecek ve bunları yardımcı veri yapılarında düzenleyecek. Dizininize yer kazanmak ve aramalara bir alan dahil etmek istemiyorsanız aranabilir olarak false ayarlayın. Ayrıntılar için bkz. Tam metin arama Azure Bilişsel Arama çalışma.
Filterable Alana sorgularda başvurulma ayarının etkinleştirip $filter etkinleştirilene olmadığını gösterir. Filtrelenebilir, dizelerin işlenebilirlik özelliğinden farklıdır. Tür veya Edm.String Collection(Edm.String) filtrelenebilir alanlar sözcük analizine tabi değildir, bu nedenle karşılaştırmalar yalnızca tam eşleşmelere yöneliktir. Örneğin, böyle bir alanı f "Güneşli gün" olarak ayarsanız $filter=f eq 'sunny' eşleşme bulamaz, ancak $filter=f eq 'Sunny day' bulur. Bu öznitelik karmaşık null alanlar için olması gerekir. Varsayılan, true basit alanlar ve karmaşık alanlar için null kullanılır. Dizin boyutunu azaltmak için bu özniteliği false filtrelemeyebilirsiniz alanlarda olarak ayarlayın.
Sıralanabilir İfadelerde alana başvurulma ayarının etkinleştirip $orderby etkinleştirilene olmadığını gösterir. Varsayılan Azure Bilişsel Arama sonuçları puana göre sıralar, ancak birçok deneyimde kullanıcılar belgelerde alanlara göre sıralamak ister. Basit bir alan yalnızca tek değerli ise (üst belge kapsamında tek bir değere sahipse) sıralanabilir.

Basit koleksiyon alanları çok değerli olduğu için sıralanabilir olamaz. Karmaşık koleksiyonların basit alt alanları da çok değerlidir ve bu nedenle sıralanabilir olamaz. Bu durum ister hemen üst alan ister üst alan olsun karmaşık koleksiyondur. Karmaşık alanlar sıralanabilir olamaz ve sıralanabilir öznitelik bu tür null alanlar için bulunamaz. Sıralanabilir için varsayılan değer, tek değerli basit alanlar, çok değerli basit alanlar ve karmaşık true false alanlar için null kullanılır.
facetable Alanına facet sorgularında başvurulacak alanın etkinleştirip etkinleştirilene olmadığını gösterir. Genellikle kategoriye göre isabet sayısı içeren arama sonuçlarının sunumunda kullanılır (örneğin dijital kameralar için arama yapmak ve markaya göre isabetleri, fiyatlara göre vb. görmek). Bu öznitelik karmaşık null alanlar için olması gerekir. Veya türünde Edm.GeographyPoint alanlar Collection(Edm.GeographyPoint) facetable olamaz. Varsayılan değer true diğer tüm basit alanlar için kullanılır. Dizin boyutunu azaltmak için bu false özniteliği, üzerinde yüz oluşturmayacak alanlar için olarak ayarlayın.
Analyzer Dizin oluşturma ve sorgu işlemleri sırasında dizeleri belirteçlere almak için sözcük sözcük çözümleyiciyi ayarlar. Bu özellik için geçerli değerler dil çözümleyicileri, yerleşik çözümleyiciler veözel çözümleyicileri içerir. Varsayılan değer: standard.lucene. Bu öznitelik yalnızca aranabilir alanlarla kullanılabilir ve searchAnalyzer veya indexAnalyzer ile birlikte ayarılamaz. Çözümleyici seçildikten ve dizinde oluşturulduktan sonra, alan için değiştirilemez. Karmaşık alanlar null için olması gerekir.
searchAnalyzer Dizin oluşturma ve sorgular için farklı sözcük çözümleyicileri belirtmek için bu özelliği indexAnalyzer ile birlikte ayarlayın. Bu özelliği kullanıyorsanız çözümleyiciyi olarak ayarlayın null ve indexAnalyzer'ın izin verilen bir değere ayarlanmış olduğundan emin olun. Bu özellik için geçerli değerler yerleşik çözümleyicileri ve özel çözümleyicileri içerir. Bu öznitelik yalnızca aranabilir alanlarla kullanılabilir. Arama çözümleyicisi mevcut bir alanda güncelleştirilebilir çünkü yalnızca sorgu zamanında kullanılabilir. Karmaşık alanlar null için olması gerekir.
indexAnalyzer Dizin oluşturma ve sorgular için farklı sözcük çözümleyicileri belirtmek için bu özelliği searchAnalyzer ile birlikte ayarlayın. Bu özelliği kullanıyorsanız çözümleyiciyi olarak ayarlayın null ve searchAnalyzer'ın izin verilen bir değere ayarlanmış olduğundan emin olun. Bu özellik için geçerli değerler yerleşik çözümleyicileri ve özel çözümleyicileri içerir. Bu öznitelik yalnızca aranabilir alanlarla kullanılabilir. Dizin çözümleyicisi seçildikten sonra alan için değiştirilemez. Karmaşık alanlar null için olması gerekir.
eş anlamlı eşlemeleri Bu alanla ilişkilendirilecek eş anlamlı eşlemelerinin adlarının listesi. Bu öznitelik yalnızca aranabilir alanlarla kullanılabilir. Şu anda alan başına yalnızca bir eş anlamlı eşlem de destekleni. Bir alana eş anlamlı eşlemesi atamak, bu alanı hedef alan sorgu terimlerinin eş anlamlı eşlem kuralları kullanılarak sorgu zamanında genişletilir. Bu öznitelik mevcut alanlarda değiştirilebilir. Karmaşık alanlar null için veya boş bir koleksiyon olması gerekir.
fields Veya türünde bir alansa alt alanların Edm.ComplexType Collection(Edm.ComplexType) listesi. Basit alanlar null için boş veya boş olması gerekir. Alt alanların nasıl ve ne zaman Azure Bilişsel Arama daha fazla bilgi için bkz. Azure Bilişsel Arama'da karmaşık veri türlerini modelleme.

Not

Filtrelenebilir, sıralanabilir veya facetable türünde alanlar en Edm.String fazla 32 kilobayt uzunluğunda olabilir. Bunun nedeni, bu tür alanların değerlerinin tek bir arama terimi olarak kabul edilir ve bir terimin Azure Bilişsel Arama uzunluğu 32 kilobayttır. Tek bir dize alanında bu değerden daha fazla metin depolamanız gerekirse, dizin tanımınıza filtrelenebilir, sıralanabilir ve facetable'i açıkça false olarak ayarlamanız gerekir.

Bir alanı aranabilir, filtrelenebilir, sıralanabilir veya facetable olarak ayarlamanın dizin boyutu ve sorgu performansı üzerinde bir etkisi vardır. Bu öznitelikleri, sorgu ifadelerinde başvurulacak şekilde ayarlanmaz.

Bir alana aranabilir, filtrelenebilir, sıralanabilir veya facetable olarak ayarlanmazsa, bu alana hiçbir sorgu ifadesinde başvuruamaz. Bu, sorgularda kullanılmasa da arama sonuçlarında gerekli olan alanlar için kullanışlıdır.

Not

Oluştur minimum dizin sayısı fiyatlandırma katmanına göre değişir. Daha fazla bilgi için bkz. Hizmet sınırları.

Yanıt

Başarılı bir istek için "201 Oluşturuldu" durum kodunu görüyor gerekir.

Varsayılan olarak, yanıt gövdesi oluşturulan dizin tanımı için JSON'u içerir. Ancak Tercih isteği üst bilgisi return=minimal olarak ayarlanırsa yanıt gövdesi boş olur ve başarı durumu kodu "201 Oluşturuldu" yerine "204 İçerik Yok" olur. Bu, dizini oluşturmak için PUT veya POST kullanılmadan bağımsız olarak doğrudur.

Örnekler

Örnek: Dizin şeması

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer" }
        ]
    }
  ],
  "suggesters": [
      { "name": "sg", "searchMode": "analyzingInfixMatching", "sourceFields": ["HotelName"] }
  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ]
}  

Örnek: Önericiler

 "suggesters": [  
   {  
     "name": "name of suggester",  
     "searchMode": "analyzingInfixMatching",  
     "sourceFields": ["field1", "field2", ...]  
   }  
 ]

Bir önericiye, bir eşleşme mi yoksa sorgu teriminin geri kalanını mı iade etmek istediğinize bağlı olarak Öneriler API'sini veya Otomatik Tamamlama API'siniiçeren sorgu isteklerine adıyla başvurabilirsiniz. Bir öneriyi oluşturma ve kullanma hakkında daha fazla bilgi için bkz. Öneri oluşturma.

Örnek: Arama ilgi düzeyi benzerliği

Bu özellik, tam metin arama sorgusunun arama sonuçlarında ilgi puanı oluşturmak için kullanılan derecelendirme algoritmasını ayarlar. Benzerlik algoritması her zaman BM25 olduğundan, 15 Temmuz 2020'den sonra oluşturulan hizmetlerde bu özellik yoksayılır. 15 Temmuz 2020'den önce oluşturulan mevcut hizmetler için bu yapıyı aşağıdaki gibi ayarerek BM25'i kabul edersiniz:

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

Örnek: CORS Seçenekleri

Tarayıcı tüm çıkış noktası arası istekleri önleyecene kadar istemci tarafı JavaScript varsayılan olarak hiçbir API'i çağıramaz. Dizininize çıkış noktası arası sorgulara izin vermek için özniteliğini ayarerek CORS'yi (Çıkış noktası arası kaynak paylaşımı(Wikipedia)) corsOptions etkinleştirin. Güvenlik nedeniyle yalnızca sorgu API'leri CORS'u destekler.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

Örnek: Şifreleme anahtarları

Şifreleme anahtarları, ek şifreleme için kullanılan müşteri tarafından yönetilen anahtarlardır. Daha fazla bilgi için bkz. Azure Key Vault'de müşteri tarafından yönetilen anahtarları kullanarak şifreleme.

{
    "name": "hotels",  
    "fields": [ omitted for brevity],
    "suggesters": [ omitted for brevity  ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": (optional, only if not using managed system identity) {
        "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
        "applicationSecret": "Authentication key of the specified AAD application)"}
      }
} 

Örnek: Puanlama Profilleri

Puanlama profili, şemanın arama sonuçlarında daha yüksek görünen belgeleri etkilemenizi sağlarken özel puanlama davranışlarını tanımlayan bölümüdir. Puanlama profilleri alan ağırlıkları ve işlevlerden yapılır. Bunları kullanmak için, sorgu dizesinde adlarına göre bir profil belirtirsiniz. Daha fazla bilgi için bkz. Arama dizinine puanlama profilleri ekleme.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

Ayrıca bkz.