Dizin Oluşturma (Azure AI Arama REST API'si)

Dizin, bir tablonun veritabanındaki kayıtları düzenlemesine benzer şekilde, Azure AI Search'te belgeleri düzenlemenin ve aramanın birincil aracıdır. Her dizin, dizin şemasına (alan adları, veri türleri ve öznitelikler) uyan bir belge koleksiyonuna sahiptir, ancak dizinler diğer arama davranışlarını tanımlayan ek yapılar (öneri, puanlama profilleri ve CORS yapılandırması) da belirtir.

İstekte POST veya PUT kullanabilirsiniz. her ikisinde de, istek gövdesindeki 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 kullanabilir ve URI'de dizin adını 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. Dizini doldurma işlemi ayrı bir işlemdir. Bu adım için bir dizin oluşturucu (bkz. Desteklenen veri kaynakları için kullanılabilir dizin oluşturucu işlemleri) veya Belge Ekle, Güncelleştir veya Sil'i kullanabilirsiniz. Ters dizinler, belgeler deftere nakledildiğinde oluşturulur.

Not

Oluşturabileceğiniz dizin sayısı üst sınırı fiyatlandırma katmanına göre değişir. Daha fazla bilgi için bkz . Hizmet sınırları.

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'de gereklidir. Ad küçük harf olmalı, harf veya sayı ile başlamalıdır, eğik çizgi veya nokta içermemelidir ve 128 karakterden az olmalıdır. Adın başlangıcı bir harf veya sayı ile başlamalıdır, ancak alt çizgi ve çizgi ardışık kalmadıkça adın geri kalanı herhangi bir harf, sayı, alt çizgi ve kısa çizgi içerebilir.
api-sürümü Gereklidir. Desteklenen sürümlerin listesi için bkz. API sürümleri.

İstek Üst Bilgileri

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

Alanlar Description
İçerik Türü Gereklidir. Bunu olarak ayarlayın application/json
api-key İsteğe bağlı olarak Azure rollerini kullanıyorsanız ve istekte taşıyıcı belirteci sağlanıyorsa bir anahtar gereklidir. Oluşturma istekleri, yönetici anahtarınıza ayarlanmış bir api-key üst bilgi içermelidir (sorgu anahtarının aksine). Ayrıntılar için bkz. Anahtar kimlik doğrulamasını kullanarak Azure AI Search'e bağlanma .

İstek Gövdesi

İsteğin gövdesi, bu dizine beslenecek belgelerdeki 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, tirelerle başlayamaz veya bitemez ve 128 karakterle sınırlıdır.
Alanları Gereklidir. Ad, veri türü ve bu alanda izin verilebilen eylemleri tanımlayan öznitelikler de dahil olmak üzere bu dizine beslenecek alan koleksiyonu. Veri türleri Varlık Veri Modeli'ne (EDM) uygundur. 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, dizinde depolanan her belge için belge kimliği olarak da 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.
Benzerlik İsteğe bağlı. 15 Temmuz 2020'dan önce oluşturulan hizmetler için bu özelliği BM25 derecelendirme algoritmasını kullanacak şekilde ayarlayın. Geçerli değerler veya değerlerini içerir "#Microsoft.Azure.Search.ClassicSimilarity""#Microsoft.Azure.Search.BM25Similarity". Bu özelliği destekleyen API sürümleri 2020-06-30 ve 2019-05-06-Preview sürümlerini içerir. Daha fazla bilgi için bkz . Azure AI Search'te algoritmaları derecelendirme.
önericiler İsteğe bağlı. Otomatik olarak tamamlanan sorgular veya dizin başına bir tane olan önerilen arama sonuçları için kullanılır. Otomatik tamamlama ve öneriler gibi kısmi sorgularda eşleştirme için ön ekleri depolayan bir veri yapısıdır. Otomatik olarak tamamlanan sorgular name ve önerilen sonuçlar için içerik sağlayan ve öneride bulunabilen alanlardan oluşur. searchMode gereklidir ve her zaman olarak analyzingInfixMatchingayarlanır. Eşleştirmenin sorgu dizesindeki herhangi bir terimde gerçekleşeceğini belirtir.
scoringProfiles İsteğe bağlı. Özel arama puanı derecelendirmesi için kullanılır. Sorgu dizesinde özel profil belirtilmediğinde çağrılan, varsayılan olarak özel profil kullanacak şekilde ayarlayın defaultScoringProfile . Öğeler hakkında daha fazla bilgi için bkz. Arama dizinine puanlama profilleri ekleme ve sonraki bölümdeki örnek.
çözümleyiciler, charFilters, tokenizers, tokenFilters İsteğe bağlı. Özel çözümleyiciler tanımlıyorsanız dizinin bu bölümlerini belirtin. Varsayılan olarak, bu bölümler null'tır.
defaultScoringProfile İsteğe bağlı. Varsayılan puanlama davranışlarının üzerine yazan özel puanlama profilinin adı.
corsSeçenekler İsteğe bağlı. tarayıcı tüm çıkış noktaları arası istekleri engelleyeceğinden istemci tarafı JavaScript varsayılan olarak hiçbir API'yi çağıramaz. Dizininizde çıkış noktaları arası sorgulara izin vermek için corsOptions özniteliğini ayarlayarak CORS'yi (Çıkış Noktaları Arası Kaynak Paylaşımı) etkinleştirin. Güvenlik nedeniyle yalnızca sorgu API'leri CORS'yi destekler. Bu corsOptions bölüm şunları içerir:allowedOrigins

(Gerekli) Dizininize erişim verilecek, her kaynağın genellikle protocol://< fully-qualified-domain-name>:<port> biçiminde olduğu (bağlantı noktası> genellikle atlanmış olsa da<) virgülle ayrılmış bir kaynak listesi. Bu, bu kaynaklardan sunulan tüm JavaScript kodlarının dizininizi sorgulamasına izin verileceği anlamına gelir (doğru api-keysağladığı varsayılır). Tüm çıkış noktalarına erişime izin vermek istiyorsanız, dizide allowedOrigins tek bir öğe olarak belirtin*. 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 denetim öncesi yanıtlarını önbelleğe alma süresini (saniye cinsinden) belirlemek için bu değeri kullanır. Bu negatif olmayan bir tamsayı olmalıdır. Bu değer ne kadar büyük olursa performans o kadar iyi olur, ancak CORS ilke değişikliklerinin geçerli olması o kadar uzun sürer. Ayarlı değilse, varsayılan 5 dakikalık bir süre kullanılır.
encryptionKey İsteğe bağlı. Azure Key Vault yönetilen kendi anahtarlarınızla eş anlamlı eşlemeyi şifrelemek için kullanılır. 2019-01-01 veya sonrasında oluşturulan faturalanabilir arama hizmetleri için kullanılabilir.

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

İsteğe bağlı olarak, yönetilen bir sistem kimliği kullanmadığınızda belirtebilirsiniz accessCredentials . accessCredentials özellikleri şunlardır applicationId (belirtilen Azure Key Vault erişim izinleri verilmiş Microsoft Entra ID uygulama kimliği) ve applicationSecret (kayıtlı uygulamanın kimlik doğrulama anahtarı). Sonraki bölümdeki bir örnekte söz dizimi gösterilmektedir.

Alan tanımları

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

Öznitelik Açıklama
name Gereklidir. Dizin 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.Int32 tamsayılar gibi Edm.String temel türlerdendir. Karmaşık alanlar , basit veya karmaşık olan alt alanlara sahip olabilir. Bu sayede nesneleri ve nesne dizilerini modelleyebilirsiniz. Bu sayede JSON nesne yapılarının çoğunu dizininize yükleyebilirsiniz. Desteklenen türlerin tam listesi için bkz . Desteklenen veri türleri (Azure AI Arama ).
anahtar Gereklidir. Bir alanın değerlerinin dizindeki belgeleri benzersiz olarak tanımladığını belirlemek için bu özniteliği true olarak ayarlayın. Anahtar alanındaki değerlerin uzunluk üst sınırı 1024 karakterdir. Anahtar alanı olarak her dizinde tam olarak bir üst düzey alan seçilmeli ve türünde Edm.Stringolmalıdır. Varsayılan, false basit alanlar ve null karmaşık alanlar içindir.

Önemli alanlar, belgeleri doğrudan aramak ve belirli belgeleri güncelleştirmek veya silmek için kullanılabilir. Anahtar alanlarının değerleri, belgeler aranırken veya dizinlenirken büyük/küçük harfe duyarlı bir şekilde işlenir. Ayrıntılar için bkz. Arama Belgesi (Azure AI Arama REST API'si) ve Belge Ekleme, Güncelleştirme veya Silme (Azure AI Arama REST API'si).
alınabilir Alanın bir arama sonucunda döndürülip döndürülemeyeceğini gösterir. Bir alanı (örneğin, kenar boşluğu) filtre, sıralama veya puanlama mekanizması olarak kullanmak istiyorsanız ancak alanın son kullanıcıya görünür olmasını istemiyorsanız bu özniteliği false olarak ayarlayın. Bu öznitelik true anahtar alanlar ve karmaşık alanlar için olmalıdır null . Bu öznitelik mevcut alanlarda değiştirilebilir. alınabilir true ayarının ayarlanması dizin depolama gereksinimlerinde herhangi bir artışa neden olmaz. Varsayılan, true basit alanlar ve null karmaşık alanlar içindir.
Aranabilir Alanın tam metin aranabilir olup olmadığını ve arama sorgularında başvurulabileceğini gösterir. Bu, dizin oluşturma sırasında sözcük kesme gibi sözcük temelli analizlerden geçeceği anlamına gelir. Aranabilir bir alanı "Güneşli gün" gibi bir değere ayarlarsanız, dahili olarak normalleştirilir ve "güneşli" ve "gün" belirteçlerine bölünür. Bu, bu terimler için tam metin aramaları sağlar. veya Collection(Edm.String) türündeki Edm.String alanlar varsayılan olarak aranabilir. Bu öznitelik false , diğer dize olmayan veri türlerinin basit alanları için ve karmaşık alanlar için olmalıdır null .

Azure AI Search bu alanların içeriğini işleyeceği ve bunları performans araması için yardımcı veri yapılarında düzenleyeceğinden, aranabilir bir alan dizininizde fazladan alan tüketir. Dizininizde yer kazanmak istiyorsanız ve aramalara dahil edilecek bir alana ihtiyacınız yoksa, aranabilir falseolarak ayarlayın. Ayrıntılar için bkz . Azure AI Search'te tam metin arama nasıl çalışır ?
Filterable Sorgularda $filter alana başvurulmasının etkinleştirilip etkinleştirilmeydiğini gösterir. Filtrelenebilir, dizelerin işlenme biçiminde aranabilirden farklıdır. Filtrelenebilir veya Collection(Edm.String) türünde Edm.String alanlar sözcük temelli analize tabi tutulmaz, bu nedenle karşılaştırmalar yalnızca tam eşleşmeler içindir. Örneğin, böyle bir alanı f "Güneşli gün" olarak ayarlarsanız eşleşme $filter=f eq 'sunny' bulunmaz, ancak $filter=f eq 'Sunny day' bulur. Bu öznitelik karmaşık alanlar için olmalıdır null . Varsayılan, true basit alanlar ve null karmaşık alanlar içindir. Dizin boyutunu küçültmek false için bu özniteliği filtrelemeyeceğiniz alanlarda olarak ayarlayın.
Sıralanabilir İfadelerde $orderby alana başvurulmasının etkinleştirilip etkinleştirilmeymeyeceğini gösterir. Varsayılan olarak Azure AI Search sonuçları puana göre sıralar, ancak birçok deneyimde kullanıcılar belgelerdeki alanlara göre sıralamak isteyecektir. Basit bir alan yalnızca tek değerliyse (üst belge kapsamında tek bir değere sahiptir) sıralanabilir.

Çok değerli olduğundan basit koleksiyon alanları sıralanamaz. Karmaşık koleksiyonların basit alt alanları da çok değerlidir ve bu nedenle sıralanabilir olamaz. Bu, ister hemen üst alan ister üst alan olsun, bir üst alan, karmaşık koleksiyondur. Karmaşık alanlar sıralanabilir olamaz ve sıralanabilir özniteliği bu tür alanlar için olmalıdır null . Sıralanabilir için varsayılan değer true , tek değerli basit alanlar, false çok değerli basit alanlar ve null karmaşık alanlar içindir.
modellenebilir Model sorgularında alana başvurulup başvurulmayacağını gösterir. Genellikle kategoriye göre isabet sayısını içeren arama sonuçlarının sunumunda kullanılır (örneğin, dijital kameraları arayın ve markaya, megapiksellere, fiyata vb. göre isabetleri görün). Bu öznitelik karmaşık alanlar için olmalıdır null . veya Collection(Edm.GeographyPoint) türünde Edm.GeographyPoint alanlar modellenebilir olamaz. Varsayılan değer true diğer tüm basit alanlar içindir. Dizin boyutunu küçültmek false için, bu özniteliği üzerinde karşılaşmayacağınız alanlarda olarak ayarlayın.
Analyzer Dizin oluşturma ve sorgu işlemleri sırasında dizeleri belirteç haline getirme için sözcük temelli çözümleyiciyi ayarlar. Bu özellik için geçerli değerler arasında dil çözümleyicileri, yerleşik çözümleyiciler ve özel çözümleyiciler bulunur. Varsayılan değer: standard.lucene. Bu öznitelik yalnızca aranabilir dize alanlarıyla kullanılabilir ve searchAnalyzer veya indexAnalyzer ile birlikte ayarlanamaz. Çözümleyici seçildikten ve alan dizinde oluşturulduktan sonra, alan için değiştirilemez. Karmaşık alanlar için olmalıdırnull.
searchAnalyzer Dizin oluşturma ve sorgular için farklı sözcük temelli çözümleyiciler belirtmek için bu özelliği indexAnalyzer ile birlikte ayarlayın. Bu özelliği kullanırsanız çözümleyiciyi olarak null ayarlayın ve indexAnalyzer'ın izin verilen bir değere ayarlandığından 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ılır. Karmaşık alanlar için olmalıdırnull.
indexAnalyzer Dizin oluşturma ve sorgular için farklı sözcük temelli çözümleyiciler belirtmek için searchAnalyzer ile birlikte bu özelliği ayarlayın. Bu özelliği kullanırsanız çözümleyici'yi null olarak ayarlayın ve searchAnalyzer'ın izin verilen bir değere ayarlandığından 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 için olmalıdırnull.
synonymMaps 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şleme desteklenir. Bir alana eş anlamlı eşlem atamak, söz dizim eşlemesindeki kurallar kullanılarak bu alanı hedefleyen sorgu terimlerinin sorgu zamanında genişletilmesini sağlar. Bu öznitelik mevcut alanlarda değiştirilebilir. Karmaşık alanlar için veya boş bir koleksiyon olmalıdır null .
fields Bu veya Collection(Edm.ComplexType)türünde Edm.ComplexType bir alansa, alt alanların listesi. Basit alanlar için boş veya boş olmalıdır null . Alt alanların nasıl ve ne zaman kullanılacağı hakkında daha fazla bilgi için bkz. Azure AI Search'te karmaşık veri türlerini modelleme .

Not

Filtrelenebilir, sıralanabilir veya modellenebilir türdeki Edm.String alanlar en fazla 32 kilobayt uzunluğunda olabilir. Bunun nedeni, bu tür alanların değerlerinin tek bir arama terimi olarak kabul edilmesi ve Azure AI Search'te bir terimin uzunluk üst sınırının 32 kilobayt olmasıdır. Tek bir dize alanında bundan daha fazla metin depolamanız gerekiyorsa, dizin tanımınızda açıkça filtrelenebilir, sıralanabilir ve modellenebilir false olarak ayarlamanız gerekir.

Bir alanı aranabilir, filtrelenebilir, sıralanabilir veya modellenebilir olarak ayarlamak dizin boyutunu ve sorgu performansını etkiler. Sorgu ifadelerinde başvurulması amaçlanmamış alanlarda bu öznitelikleri ayarlamayın.

Bir alan aranabilir, filtrelenebilir, sıralanabilir veya modellenebilir olarak ayarlanmadıysa, hiçbir sorgu ifadesinde alana başvuruda bulunulamaz. Bu, sorgularda kullanılmayan ancak arama sonuçlarında gerekli olan alanlar için kullanışlıdır.

Not

Oluşturabileceğiniz dizin sayısı üst sınırı 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örmeniz gerekir.

Varsayılan olarak, yanıt gövdesi dizin tanımı için JSON içerir. Ancak, istek üst bilgisi olarak return=minimalayarlanırsa Prefer yanıt gövdesi boştur ve başarı durum kodu "201 Oluşturuldu" yerine "204 İçerik Yok" olur. Dizini oluşturmak için PUT veya POST kullanılıp kullanılmadığına bakılmaksızın bu durum geçerlidir.

Ö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: Önerenler

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

Bir öneriye , bir eşleşme veya sorgu teriminin geri kalanını döndürmek isteyip istemediğinize bağlı olarak Öneriler API'sini veya Otomatik Tamamlama API'sini içeren sorgu isteklerinde ada göre başvurulur. Öneri oluşturucu oluşturma ve kullanma hakkında daha fazla bilgi için bkz. Öneri oluşturucu oluşturma.

Örnek: Arama ilgisi 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'dan sonra oluşturulan hizmetlerde bu özellik yoksayılır. 15 Temmuz 2020'dan önce oluşturulan mevcut hizmetler için, bu yapıyı aşağıdaki gibi ayarlayarak BM25'i kabul edebilirsiniz:

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

Örnek: CORS Seçenekleri

tarayıcı tüm çıkış noktaları arası istekleri engelleyeceğinden istemci tarafı JavaScript varsayılan olarak hiçbir API'yi çağıramaz. Dizininizde çıkış noktaları arası sorgulara izin vermek için özniteliğini ayarlayarak corsOptions CORS'yi (Çıkış noktaları arası kaynak paylaşımı (Wikipedia)) etkinleştirin. Güvenlik nedeniyle yalnızca sorgu API'leri CORS'yi 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'da 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 hangi belgelerin daha yüksek görüneceğini etkilemenizi sağlayan özel puanlama davranışlarını tanımlayan bir bölümüdür. Puanlama profilleri alan ağırlıklarından ve işlevlerinden oluşur. Bunları kullanmak için sorgu dizesinde ada 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"  
       }  
 ]
}

Örnek: Eş anlamlı haritalar

Arama hizmetinizde eş anlamlı eşlem oluşturduktan sonra, bunu türdeki Edm.String veya Collection(Edm.String) dizindeki alanlara searchable atayabilirsiniz. Aşağıdaki dizin tanımı , "tarz" alanını 'mysynonymmap' eş anlamlı eşlemesini kullanacak şekilde yapılandırıyor.

Bu özelliği var olan bir alana eklemek için Dizini Güncelleştir'i kullanabilirsiniz. Alan özelliği synonymMaps eşlemeyi belirtir (alan başına bir tane). Var olan alanların özelliklerini istediğiniz zaman güncelleştirebilirsiniz synonymMaps .

Terimleri veya tümcecikleri kullanarak her zamanki gibi sorgu yapın (tırnak içine alınmalıdır). Azure AI Search'te "jakuzi" gibi iki bölümden oluşursa her terim bağımsız olarak değerlendirilir. "Spa küveti" için sorgu yaparsanız, arama motoru bu tümceciği ve tanımladığınız jakuzi gibi tüm eş anlamlıları tarar.

POST /indexes?api-version=2020-06-30
{
    "name":"myindex",
    "fields":[
    ...
        {
            "name":"genre",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"en.lucene",
            "synonymMaps": [
                "mysynonymmap"
            ]
        }
    ]
    ...
}

Ayrıca bkz.