Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Di Azure AI Search, normalizer adalah komponen yang melakukan pra-proses teks untuk pencocokan kata kunci di atas bidang yang ditandai sebagai "dapat difilter", "dapat difaset", atau "dapat diurutkan". Berbeda dengan bidang teks lengkap "dapat dicari" yang dipasangkan dengan penganalisis teks, konten yang dibuat untuk operasi pengurutan faset filter tidak menjalani analisis atau tokenisasi. Kelalaian analisis teks dapat menghasilkan hasil yang tidak terduga ketika casing dan perbedaan karakter muncul, itulah sebabnya Anda memerlukan normalizer untuk melakukan homogenisasi variasi dalam konten Anda.
Dengan menerapkan normalizer, Anda dapat mencapai transformasi teks ringan yang meningkatkan hasil:
- Konsistensi dalam penggunaan huruf (seperti semua huruf kecil atau huruf besar)
- Menormalkan aksen dan diakritik seperti ö atau ê ke karakter setara ASCII "o" dan "e"
- Memetakan karakter seperti
-dan spasi kosong ke dalam karakter yang ditentukan pengguna
Manfaat normalisasi
Mencari dan mengambil dokumen dari indeks pencarian memerlukan pencocokan input kueri dengan konten dokumen. Pencocokan dilakukan terhadap konten yang ditokenisasi, seperti ketika Anda memanggil "search", atau terhadap konten yang tidak ditokenisasi jika permintaannya adalah operasi filter, facet, atau orderby.
Karena konten yang tidak ditokenisasi juga tidak dianalisis, perbedaan kecil dalam konten dievaluasi sebagai nilai yang berbeda. Perhatikan contoh berikut:
$filter=City eq 'Las Vegas'hanya akan mengembalikan dokumen yang berisi teks persis"Las Vegas"dan mengecualikan dokumen yang memiliki"LAS VEGAS"dan"las vegas", yang tidak sesuai ketika kasus penggunaan memerlukan semua dokumen tanpa memperhatikan huruf besar/kecil.search=*&facet=City,count:5akan mengembalikan"Las Vegas","LAS VEGAS"dan"las vegas"sebagai nilai yang berbeda meskipun merupakan kota yang sama.search=usa&$orderby=Cityakan mengurutkan kota secara leksikografis:"Las Vegas","Seattle","las vegas", bahkan jika niatannya adalah untuk mengelompokkan kota yang sama tanpa memedulikan huruf besar atau kecil.
Normalizer, yang dipanggil selama pengindeksan dan eksekusi kueri, menambahkan transformasi ringan yang memuluskan perbedaan kecil dalam teks untuk skenario filter, faksi, dan pengurutan. Dalam contoh sebelumnya, varian "Las Vegas" akan diproses sesuai dengan normalizer yang Anda pilih (misalnya, semua teks diubah menjadi huruf kecil) untuk hasil yang lebih seragam.
Cara menentukan normalizer
Normalizer ditentukan dalam definisi indeks, berdasarkan per bidang, pada bidang teks (Edm.String dan Collection(Edm.String)) yang memiliki setidaknya salah satu properti "dapat difilter", "dapat diurutkan", atau "dapat difaset" diatur ke true. Mengatur normalizer bersifat opsional dan null secara default. Sebaiknya evaluasi normalizer yang telah ditentukan sebelumnya sebelum mengonfigurasi yang kustom.
Normalizer hanya dapat ditentukan ketika Anda menambahkan bidang baru ke indeks, jadi jika memungkinkan, cobalah untuk menilai kebutuhan normalisasi di muka dan menetapkan normalizer pada tahap awal pengembangan saat menghilangkan dan membuat ulang indeks adalah rutin.
Saat membuat definisi bidang dalam indeks, atur properti "normalizer" ke salah satu nilai berikut: normalizer yang telah ditentukan sebelumnya seperti "huruf kecil", atau normalizer kustom (ditentukan dalam skema indeks yang sama).
"fields": [ { "name": "Description", "type": "Edm.String", "retrievable": true, "searchable": true, "filterable": true, "analyzer": "en.microsoft", "normalizer": "lowercase" ... } ]Normalizer kustom didefinisikan di bagian "normalizer" dari indeks terlebih dahulu, lalu ditetapkan ke definisi bidang seperti yang ditunjukkan pada langkah sebelumnya. Untuk informasi selengkapnya, lihat Membuat Indeks dan juga Menambahkan normalizer kustom.
"fields": [ { "name": "Description", "type": "Edm.String", "retrievable": true, "searchable": true, "analyzer": null, "normalizer": "my_custom_normalizer" },
Catatan
Untuk mengubah normalizer bidang yang ada, bangun ulang indeks sepenuhnya (Anda tidak dapat membangun ulang bidang individual).
Solusi yang baik untuk indeks produksi, di mana membangun kembali indeks itu mahal, adalah membuat bidang baru yang identik dengan yang lama tetapi dengan normalizer baru, dan menggantikan yang lama. Gunakan Update Index untuk menggabungkan bidang baru dan mergeOrUpload untuk mengisinya. Kemudian, sebagai bagian dari layanan indeks yang direncanakan, Anda dapat membersihkan indeks untuk menghapus bidang usang.
Normalizer yang sudah ditentukan dan kustom
Azure AI Search menyediakan normalizer bawaan untuk kasus penggunaan umum bersama dengan kemampuan untuk menyesuaikan sesuai kebutuhan.
| Kategori | Deskripsi |
|---|---|
| Normalizer yang telah ditentukan | Disediakan siap pakai dan dapat digunakan tanpa konfigurasi apa pun. |
| Normalizerkustom 1 | Untuk skenario tingkat lanjut. Memerlukan konfigurasi yang ditentukan pengguna dari kombinasi elemen yang ada, yang terdiri dari filter karakter dan token. |
(1) Normalizer kustom tidak menentukan tokenizer karena normalizer selalu menghasilkan satu token.
Menguji normalizer
Anda dapat menggunakan Test Analyzer (REST) untuk melihat cara normalizer memproses input.
Permintaan
POST https://[search service name].search.windows.net/indexes/[index name]/analyze?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
{
"normalizer":"asciifolding",
"text": "Vis-à-vis means Opposite"
}
Jawaban
HTTP/1.1 200 OK
{
"tokens": [
{
"token": "Vis-a-vis means Opposite",
"startOffset": 0,
"endOffset": 24,
"position": 0
}
]
}
Referensi penormalan
Normalizer yang telah ditentukan
| Nama | Deskripsi dan Opsi |
|---|---|
| standar | Mengubah teks menjadi huruf kecil diikuti dengan asciifolding. |
| huruf kecil | Mengubah karakter menjadi huruf kecil. |
| huruf besar | Mengubah karakter menjadi huruf besar. |
| asciifolding | Mengubah karakter yang tidak ada di blok Unicode Latin Dasar ke setara ASCII mereka, jika ada. Misalnya, mengubah à ke a. |
| elisi | Menghapus elision dari awal token. |
Filter karakter yang didukung
Normalizer mendukung dua filter karakter yang identik dengan rekan-rekan mereka dalam filter karakter penganalisis kustom:
Filter token yang didukung
Daftar di bawah ini menunjukkan filter token yang didukung untuk normalizer dan merupakan subset dari filter token keseluruhan yang digunakan dalam penganalisis kustom.
- arabic_normalization
- asciifolding
- cjk_width
- elisi
- german_normalization
- hindi_normalization
- indic_normalization
- normalisasi_persia
- scandinavian_normalization
- scandinavian_folding
- sorani_normalization
- Huruf kecil
- huruf besar
Menambahkan normalizer kustom
Normalizer yang kustom ditentukan dalam skema indeks. Definisi mencakup nama, jenis, satu atau beberapa filter karakter dan filter token. Filter karakter dan filter token adalah blok penyusun untuk normalizer kustom dan bertanggung jawab atas pemrosesan teks. Filter ini diterapkan dari kiri ke kanan.
token_filter_name_1 adalah nama filter token, dan char_filter_name_1 dan char_filter_name_2 adalah nama filter karakter (lihat tabel filter token yang didukung dan filter karakter yang didukung di bawah ini untuk nilai yang valid).
"normalizers":(optional)[
{
"name":"name of normalizer",
"@odata.type":"#Microsoft.Azure.Search.CustomNormalizer",
"charFilters":[
"char_filter_name_1",
"char_filter_name_2"
],
"tokenFilters":[
"token_filter_name_1"
]
}
],
"charFilters":(optional)[
{
"name":"char_filter_name_1",
"@odata.type":"#char_filter_type",
"option1": "value1",
"option2": "value2",
...
}
],
"tokenFilters":(optional)[
{
"name":"token_filter_name_1",
"@odata.type":"#token_filter_type",
"option1": "value1",
"option2": "value2",
...
}
]
Normalizer kustom dapat ditambahkan selama pembuatan indeks atau kemudian dengan memperbarui yang sudah ada. Menambahkan normalizer kustom ke indeks yang ada memerlukan "allowIndexDowntime" flag ditentukan dalam Pembaruan Indeks dan akan membuat indeks tidak tersedia selama beberapa detik.
Contoh pengatur normal khusus
Contoh di bawah ini mengilustrasikan definisi normalizer kustom dengan filter karakter dan filter token yang sesuai. Opsi kustom untuk filter karakter dan filter token ditentukan secara terpisah sebagai konstruksi bernama, lalu direferensikan dalam definisi normalizer seperti yang diilustrasikan di bawah ini.
Normalizer kustom bernama "my_custom_normalizer" didefinisikan di bagian "normalizer" dari definisi indeks.
Normalizer terdiri dari dua filter karakter dan tiga filter token: elisi, huruf kecil, dan filter asciifolding yang disesuaikan "my_asciifolding".
Filter karakter pertama "map_dash" menggantikan semua tanda hubung dengan garis bawah sementara yang kedua "remove_whitespace" menghapus semua spasi.
{
"name":"myindex",
"fields":[
{
"name":"id",
"type":"Edm.String",
"key":true,
"searchable":false,
},
{
"name":"city",
"type":"Edm.String",
"filterable": true,
"facetable": true,
"normalizer": "my_custom_normalizer"
}
],
"normalizers":[
{
"name":"my_custom_normalizer",
"@odata.type":"#Microsoft.Azure.Search.CustomNormalizer",
"charFilters":[
"map_dash",
"remove_whitespace"
],
"tokenFilters":[
"my_asciifolding",
"elision",
"lowercase",
]
}
],
"charFilters":[
{
"name":"map_dash",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["-=>_"]
},
{
"name":"remove_whitespace",
"@odata.type":"#Microsoft.Azure.Search.MappingCharFilter",
"mappings":["\\u0020=>"]
}
],
"tokenFilters":[
{
"name":"my_asciifolding",
"@odata.type":"#Microsoft.Azure.Search.AsciiFoldingTokenFilter",
"preserveOriginal":true
}
]
}