Buat Indeks (Azure AI Search REST API)

Indeks adalah cara utama untuk mengatur dan mencari dokumen di Azure AI Search, mirip dengan cara tabel menata rekaman dalam database. Setiap indeks memiliki kumpulan dokumen yang semuanya sesuai dengan skema indeks (nama bidang, jenis data, dan atribut), tetapi indeks juga menentukan konstruksi tambahan (saran, profil penilaian, dan konfigurasi CORS) yang menentukan perilaku pencarian lainnya.

Anda dapat menggunakan POST atau PUT pada permintaan. Untuk salah satu dari keduanya, dokumen JSON dalam isi permintaan menyediakan definisi objek.

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

Atau, Anda dapat menggunakan PUT dan menentukan nama indeks pada URI.

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

HTTPS diperlukan untuk semua permintaan layanan. Jika indeks tidak ada, indeks akan dibuat. Jika sudah ada, itu diperbarui ke definisi baru.

Membuat indeks menetapkan skema dan metadata. Mengisi indeks adalah operasi terpisah. Untuk langkah ini, Anda dapat menggunakan pengindeks (lihat Operasi pengindeks, tersedia untuk sumber data yang didukung) atau Tambahkan, Perbarui, atau Hapus Dokumen. Indeks terbalik dihasilkan saat dokumen diposting.

Catatan

Jumlah maksimum indeks yang dapat Anda buat bervariasi menurut tingkat harga. Untuk informasi selengkapnya, lihat Batas layanan.

Parameter URI

Parameter Deskripsi
nama layanan Wajib diisi. Atur ini ke nama unik yang ditentukan pengguna dari layanan pencarian Anda.
nama indeks Diperlukan pada URI jika menggunakan PUT. Nama harus huruf kecil, dimulai dengan huruf atau angka, tidak memiliki garis miring atau titik, dan kurang dari 128 karakter. Awal nama harus dimulai dengan huruf atau angka, tetapi sisa nama dapat menyertakan huruf, angka, garis bawah, dan tanda hubung apa pun, selama garis bawah dan tanda hubung tidak berturut-turut.
versi-api Wajib diisi. Lihat versi API untuk daftar versi yang didukung.

Judul Permintaan

Tabel berikut ini menjelaskan header permintaan yang diperlukan dan opsional.

Bidang Deskripsi
Jenis-Konten Wajib diisi. Atur titik akhir ini ke application/json
api-key Opsional jika Anda menggunakan peran Azure dan token pembawa disediakan berdasarkan permintaan, jika tidak, kunci diperlukan. Membuat permintaan harus menyertakan header yang api-key diatur ke kunci admin Anda (dibandingkan dengan kunci kueri). Lihat Menyambungkan ke Azure AI Search menggunakan autentikasi kunci untuk detailnya.

Isi Permintaan

Isi permintaan berisi definisi skema, yang mencakup daftar bidang data dalam dokumen yang akan diumpankan ke dalam indeks ini.

JSON berikut adalah representasi tingkat tinggi dari bagian utama definisi.

{  
  "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) { }  
}  

Permintaan berisi properti berikut:

Properti Deskripsi
nama Wajib diisi. Nama indeks. Nama indeks hanya boleh berisi huruf kecil, digit, atau tanda hubung, tidak dapat dimulai atau diakhir dengan tanda hubung dan dibatasi hingga 128 karakter.
Bidang Wajib diisi. Kumpulan bidang yang akan dimasukkan ke dalam indeks ini, termasuk nama, jenis data, dan atribut yang menentukan tindakan yang diizinkan pada bidang tersebut. Jenis data sesuai dengan Model Data Entitas (EDM). Untuk informasi selengkapnya, lihat Jenis data yang didukung . Harus ada satu bidang dalam koleksi yang ditentukan sebagai bidang kunci . Ini harus menjadi bidang string. Bidang ini mewakili pengidentifikasi unik, terkadang disebut ID dokumen, untuk setiap dokumen yang disimpan dengan indeks. Kunci dokumen peka huruf besar/kecil. Misalnya, dokumen dengan kunci "abc" dianggap berbeda dari dokumen dengan kunci "ABC".
Kesamaan Pilihan. Untuk layanan yang dibuat sebelum 15 Juli 2020, atur properti ini untuk menggunakan algoritma peringkat BM25. Nilai yang valid meliputi "#Microsoft.Azure.Search.ClassicSimilarity" atau "#Microsoft.Azure.Search.BM25Similarity". Versi API yang mendukung properti ini mencakup 2020-06-30 dan 2019-05-06-Preview. Untuk informasi selengkapnya, lihat Algoritma peringkat di Azure AI Search.
pemberi saran Pilihan. Digunakan untuk kueri yang lengkapi otomatis atau hasil pencarian yang disarankan, satu per indeks. Ini adalah struktur data yang menyimpan awalan untuk pencocokan pada kueri parsial seperti lengkapi otomatis dan saran. Terdiri dari name bidang sadar saran dan yang menyediakan konten untuk kueri yang dilengkapi secara otomatis dan hasil yang disarankan. searchMode diperlukan, dan selalu diatur ke analyzingInfixMatching. Ini menentukan bahwa pencocokan akan terjadi pada istilah apa pun dalam string kueri.
scoringProfiles Pilihan. Digunakan untuk peringkat skor pencarian kustom. Atur defaultScoringProfile untuk menggunakan profil kustom sebagai default, dipanggil setiap kali profil kustom tidak ditentukan pada string kueri. Untuk informasi selengkapnya tentang elemen, lihat Menambahkan profil penilaian ke indeks pencarian dan contoh di bagian berikutnya.
analyzer, charFilters, tokenizer, tokenFilters Pilihan. Tentukan bagian indeks ini jika Anda menentukan penganalisis kustom. Secara default, bagian ini null.
defaultScoringProfile Pilihan. Nama profil penilaian kustom yang menimpa perilaku penilaian default.
corsOptions Pilihan. JavaScript sisi klien tidak dapat memanggil API apa pun secara default karena browser akan mencegah semua permintaan lintas asal. Untuk mengizinkan kueri lintas asal ke indeks Anda, aktifkan CORS (Berbagi Sumber Daya Lintas Asal) dengan mengatur atribut corsOptions. Untuk alasan keamanan, hanya API kueri yang mendukung CORS. Bagian ini corsOptions mencakup:
allowedOrigins
(Diperlukan) Daftar asal yang dibatasi koma yang akan diberikan akses ke indeks Anda, di mana setiap asal biasanya dari formulir protocol://< fully-qualified-domain-name>:<port> (meskipun <port> sering dihilangkan). Ini berarti bahwa setiap kode JavaScript yang disajikan dari asal tersebut akan diizinkan untuk mengkueri indeks Anda (dengan asumsi kode tersebut memberikan yang benar api-key). Jika Anda ingin mengizinkan akses ke semua asal, tentukan * sebagai item tunggal dalam allowedOrigins array. Ini tidak disarankan untuk produksi, tetapi mungkin berguna untuk pengembangan atau penelusuran kesalahan.

maxAgeInSeconds (Opsional) Browser menggunakan nilai ini untuk menentukan durasi (dalam detik) untuk menyimpan respons preflight CORS. Nilai harus bilangan bulat non-negatif. Semakin besar nilai ini, semakin baik performanya, tetapi semakin lama waktu yang diperlukan untuk menerapkan perubahan kebijakan CORS. Jika tidak diatur, durasi default 5 menit akan digunakan.
encryptionKey Pilihan. Digunakan untuk mengenkripsi peta sinonim, dengan kunci Anda sendiri, dikelola di Key Vault Azure Anda. Tersedia untuk layanan pencarian yang dapat ditagih yang dibuat pada atau setelah 2019-01-01.

Bagian encryptionKey berisi yang ditentukan keyVaultKeyName pengguna (diperlukan), yang dihasilkan keyVaultKeyVersion sistem (diperlukan), dan keyVaultUri menyediakan kunci (diperlukan, juga disebut sebagai nama DNS). Contoh URI mungkin "https://my-keyvault-name.vault.azure.net".

Secara opsional, Anda dapat menentukan accessCredentials apakah Anda tidak menggunakan identitas sistem terkelola. Properti yang accessCredentials disertakan applicationId (Microsoft Entra ID ID aplikasi yang diberikan izin akses ke Key Vault Azure yang Anda tentukan), dan applicationSecret (kunci autentikasi aplikasi terdaftar). Contoh di bagian berikutnya mengilustrasikan sintaks.

Definisi bidang

Atribut berikut dapat diatur pada bidang saat membuat indeks.

Atribut Deskripsi
nama Wajib diisi. Mengatur nama bidang, yang harus unik dalam kumpulan bidang indeks atau bidang induk.
jenis Wajib diisi. Mengatur jenis data untuk bidang . Bidang bisa sederhana atau kompleks. Bidang sederhana adalah jenis primitif, seperti Edm.String untuk teks atau Edm.Int32 untuk bilangan bulat. Bidang kompleks dapat memiliki sub-bidang yang sederhana atau kompleks. Ini memungkinkan Anda untuk memodelkan objek dan array objek, yang pada gilirannya memungkinkan Anda mengunggah sebagian besar struktur objek JSON ke indeks Anda. Lihat Jenis data yang didukung (Azure AI Search) untuk daftar lengkap jenis yang didukung.
kunci Wajib diisi. Atur atribut ini ke true untuk menunjuk bahwa nilai bidang secara unik mengidentifikasi dokumen dalam indeks. Panjang maksimum nilai dalam bidang kunci adalah 1024 karakter. Tepat satu bidang tingkat atas di setiap indeks harus dipilih sebagai bidang kunci dan harus berjenis Edm.String. Defaultnya adalah false untuk bidang sederhana dan null untuk bidang kompleks.

Bidang kunci dapat digunakan untuk mencari dokumen secara langsung dan memperbarui atau menghapus dokumen tertentu. Nilai bidang kunci ditangani dengan cara yang peka huruf besar/kecil saat mencari atau mengindeks dokumen. Lihat Dokumen Pencarian (Azure AI Search REST API) dan Tambahkan, Perbarui, atau Hapus Dokumen (Azure AI Search REST API) untuk detailnya.
dapat diambil Menunjukkan apakah bidang dapat dikembalikan dalam hasil pencarian. Atur atribut ini ke false jika Anda ingin menggunakan bidang (misalnya, margin) sebagai filter, pengurutan, atau mekanisme penilaian tetapi tidak ingin bidang terlihat oleh pengguna akhir. Atribut ini harus true untuk bidang kunci, dan harus null untuk bidang kompleks. Atribut ini dapat diubah pada bidang yang ada. Pengaturan yang dapat diambil true tidak menyebabkan peningkatan persyaratan penyimpanan indeks. Defaultnya adalah true untuk bidang sederhana dan null untuk bidang kompleks.
dapat dicari Menunjukkan apakah bidang dapat dicari teks lengkap dan dapat direferensikan dalam kueri pencarian. Ini berarti akan menjalani analisis leksikal seperti pemecahan kata selama pengindeksan. Jika Anda mengatur bidang yang dapat dicari ke nilai seperti "Hari cerah", secara internal bidang tersebut akan dinormalisasi dan dibagi menjadi token individu "cerah" dan "hari". Ini memungkinkan pencarian teks lengkap untuk istilah-istilah ini. Bidang jenis Edm.String atau Collection(Edm.String) dapat dicari secara default. Atribut ini harus false untuk bidang sederhana dari jenis data non-string lainnya, dan harus null untuk bidang kompleks.

Bidang yang dapat dicari menggunakan ruang ekstra dalam indeks Anda karena Azure AI Search akan memproses konten bidang tersebut dan mengaturnya dalam struktur data tambahan untuk pencarian berkinerja. Jika Anda ingin menghemat ruang dalam indeks Dan Anda tidak memerlukan bidang untuk disertakan dalam pencarian, atur dapat dicari ke false. Lihat Cara kerja pencarian teks lengkap di Pencarian Azure AI untuk detailnya.
dapat difilter Menunjukkan apakah akan mengaktifkan bidang yang akan direferensikan dalam $filter kueri. Dapat difilter berbeda dari yang dapat dicari dalam bagaimana string ditangani. Bidang jenis Edm.String atau Collection(Edm.String) yang dapat difilter tidak mengalami analisis leksikal, sehingga perbandingan hanya untuk kecocokan yang tepat. Misalnya, jika Anda mengatur bidang f seperti itu ke "Hari cerah", $filter=f eq 'sunny' tidak akan menemukan kecocokan, tetapi $filter=f eq 'Sunny day' akan. Atribut ini harus null untuk bidang kompleks. Defaultnya adalah true untuk bidang sederhana dan null untuk bidang kompleks. Untuk mengurangi ukuran indeks, atur atribut ini ke false pada bidang yang tidak akan Anda filter.
bisa diurutkan Menunjukkan apakah akan mengaktifkan bidang yang akan direferensikan dalam $orderby ekspresi. Secara default Azure AI Search mengurutkan hasil menurut skor, tetapi dalam banyak pengalaman pengguna akan ingin mengurutkan menurut bidang dalam dokumen. Bidang sederhana hanya dapat diurutkan jika bernilai tunggal (memiliki nilai tunggal dalam cakupan dokumen induk).

Bidang koleksi sederhana tidak dapat diurutkan, karena multinilai. Sub-bidang sederhana dari koleksi kompleks juga multinilai, dan oleh karena itu tidak dapat diurutkan. Ini benar apakah itu bidang induk langsung, atau bidang leluhur, itulah koleksi yang kompleks. Bidang kompleks tidak dapat diurutkan dan atribut yang dapat diurutkan harus null untuk bidang tersebut. Default untuk dapat diurutkan adalah true untuk bidang sederhana bernilai tunggal, false untuk bidang sederhana multinilai, dan null untuk bidang kompleks.
facetable Menunjukkan apakah akan mengaktifkan bidang yang akan direferensikan dalam kueri faset. Biasanya digunakan dalam presentasi hasil pencarian yang mencakup hitungan menurut kategori (misalnya, mencari kamera digital dan melihat hit berdasarkan merek, berdasarkan megapiksel, berdasarkan harga, dan sebagainya). Atribut ini harus null untuk bidang kompleks. Bidang jenis Edm.GeographyPoint atau Collection(Edm.GeographyPoint) tidak dapat difaset. Defaultnya adalah true untuk semua bidang sederhana lainnya. Untuk mengurangi ukuran indeks, atur atribut ini ke false pada bidang yang tidak akan Anda fasetkan.
Analyzer Mengatur penganalisis leksikal untuk tokenisasi string selama operasi pengindeksan dan kueri. Nilai yang valid untuk properti ini termasuk penganalisis bahasa, penganalisis bawaan, dan penganalisis kustom. Default adalah standard.lucene. Atribut ini hanya dapat digunakan dengan bidang string yang dapat dicari, dan tidak dapat diatur bersama dengan searchAnalyzer atau indexAnalyzer. Setelah penganalisis dipilih dan bidang dibuat dalam indeks, penganalisis tidak dapat diubah untuk bidang . Harus null untuk bidang kompleks.
searchAnalyzer Atur properti ini bersama dengan indexAnalyzer untuk menentukan penganalisis leksikal yang berbeda untuk pengindeksan dan kueri. Jika Anda menggunakan properti ini, atur penganalisis ke null dan pastikan indexAnalyzer diatur ke nilai yang diizinkan. Nilai yang valid untuk properti ini termasuk penganalisis bawaan dan penganalisis kustom. Atribut ini hanya dapat digunakan dengan bidang yang dapat dicari. Penganalisis pencarian dapat diperbarui pada bidang yang ada karena hanya digunakan pada waktu kueri. Harus null untuk bidang kompleks.
indexAnalyzer Atur properti ini bersama dengan searchAnalyzer untuk menentukan penganalisis leksikal yang berbeda untuk pengindeksan dan kueri. Jika Anda menggunakan properti ini, atur penganalisis ke null dan pastikan searchAnalyzer diatur ke nilai yang diizinkan. Nilai yang valid untuk properti ini termasuk penganalisis bawaan dan penganalisis kustom. Atribut ini hanya dapat digunakan dengan bidang yang dapat dicari. Setelah penganalisis indeks dipilih, penganalisis tidak dapat diubah untuk bidang . Harus null untuk bidang kompleks.
synonymMaps Daftar nama peta sinonim untuk dikaitkan dengan bidang ini. Atribut ini hanya dapat digunakan dengan bidang yang dapat dicari. Saat ini hanya satu peta sinonim per bidang yang didukung. Menetapkan peta sinonim ke bidang memastikan bahwa istilah kueri yang menargetkan bidang tersebut diperluas pada waktu kueri menggunakan aturan di peta sinonim. Atribut ini dapat diubah pada bidang yang ada. Harus berupa null atau koleksi kosong untuk bidang kompleks.
fields Daftar sub-bidang jika ini adalah bidang jenis Edm.ComplexType atau Collection(Edm.ComplexType). Harus null atau kosong untuk bidang sederhana. Lihat Cara memodelkan jenis data kompleks di Azure AI Search untuk informasi selengkapnya tentang cara dan kapan menggunakan sub-bidang.

Catatan

Bidang jenis Edm.String yang dapat difilter, dapat diurutkan, atau dapat difaset dapat memiliki panjang paling banyak 32 kilobyte. Ini karena nilai bidang tersebut diperlakukan sebagai istilah pencarian tunggal, dan panjang maksimum istilah dalam Pencarian Azure AI adalah 32 kilobyte. Jika Anda perlu menyimpan lebih banyak teks daripada ini dalam satu bidang string, Anda harus secara eksplisit mengatur dapat difilter, dapat diurutkan, dan dapat difaset ke false dalam definisi indeks Anda.

Mengatur bidang sebagai dapat dicari, dapat difilter, diurutkan, atau dapat difaset berdampak pada ukuran indeks dan performa kueri. Jangan atur atribut tersebut pada bidang yang tidak dimaksudkan untuk direferensikan dalam ekspresi kueri.

Jika bidang tidak diatur agar dapat dicari, dapat difilter, dapat diurutkan, atau dapat difaset, bidang tidak dapat direferensikan dalam ekspresi kueri apa pun. Ini berguna untuk bidang yang tidak digunakan dalam kueri, tetapi diperlukan dalam hasil pencarian.

Catatan

Jumlah maksimum indeks yang dapat Anda buat bervariasi menurut tingkat harga. Untuk informasi selengkapnya, lihat Batas layanan.

Respons

Untuk permintaan yang berhasil, Anda akan melihat kode status "201 Dibuat".

Secara default, isi respons berisi JSON untuk definisi indeks. Namun, jika Prefer header permintaan diatur ke return=minimal, isi respons kosong, dan kode status keberhasilan adalah "204 Tanpa Konten" alih-alih "201 Dibuat". Ini benar terlepas dari apakah PUT atau POST digunakan untuk membuat indeks.

Contoh

Contoh: Skema indeks

{
  "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"
    }
  ]
}  

Contoh: Pemberi Saran

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

Pemberi saran direferensikan berdasarkan nama pada permintaan kueri yang menyertakan API Saran atau API Lengkapi Otomatis, bergantung pada apakah Anda ingin mengembalikan kecocokan atau sisa istilah kueri. Untuk informasi selengkapnya tentang membuat dan menggunakan pemberi saran, lihat Membuat pemberi saran.

Contoh: Kesamaan untuk relevansi pencarian

Properti ini mengatur algoritma peringkat yang digunakan untuk membuat skor relevansi dalam hasil pencarian kueri pencarian teks lengkap. Dalam layanan yang dibuat setelah 15 Juli 2020, properti ini diabaikan karena algoritma kesamaan selalu BM25. Untuk layanan yang sudah ada yang dibuat sebelum 15 Juli 2020, Anda dapat memilih BM25 dengan mengatur konstruksi ini sebagai berikut:

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

Contoh: Opsi CORS

JavaScript sisi klien tidak dapat memanggil API apa pun secara default karena browser akan mencegah semua permintaan lintas asal. Untuk mengizinkan kueri lintas asal ke indeks Anda, aktifkan CORS (Berbagi sumber daya lintas asal (Wikipedia)) dengan mengatur corsOptions atribut . Untuk alasan keamanan, hanya API kueri yang mendukung CORS.

{
   "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)  
     }
}

Contoh: Kunci enkripsi

Kunci enkripsi adalah kunci yang dikelola pelanggan yang digunakan untuk enkripsi tambahan. Untuk informasi selengkapnya, lihat Enkripsi menggunakan kunci yang dikelola pelanggan di Azure Key Vault.

{
    "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)"}
      }
} 

Contoh: Profil Penilaian

Profil penilaian adalah bagian dari skema yang menentukan perilaku penilaian kustom yang memungkinkan Anda memengaruhi dokumen mana yang tampak lebih tinggi dalam hasil pencarian. Profil penilaian terdiri dari bobot dan fungsi lapangan. Untuk menggunakannya, Anda menentukan profil menurut nama pada string kueri. Untuk informasi selengkapnya, lihat Menambahkan profil penilaian ke indeks pencarian untuk detailnya.

{
   "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"  
       }  
 ]
}

Contoh: Peta sinonim

Setelah membuat peta sinonim di layanan pencarian, Anda dapat menetapkannya ke searchable bidang jenis Edm.String atau Collection(Edm.String) dalam indeks. Definisi indeks di bawah ini mengonfigurasi bidang "genre" untuk menggunakan peta sinonim 'mysynonymmap'.

Anda bisa menggunakan Indeks Pembaruan untuk menambahkan properti ini ke bidang yang sudah ada. Properti synonymMaps bidang menentukan peta (satu per bidang). Anda dapat memperbarui synonymMaps properti bidang yang ada kapan saja.

Kueri seperti biasa, menggunakan istilah atau frasa (diapit tanda kutip). Dalam Pencarian Azure AI, istilah dua bagian, seperti "hot tub", harus dinyatakan sebagai frasa, jika tidak, setiap istilah dievaluasi secara independen. Jika Anda meminta "hot tub", mesin pencari akan memindai frasa tersebut serta sinonim apa pun yang telah Anda tentukan, seperti jacuzzi.

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

Lihat juga