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.
Artikel ini adalah dokumentasi referensi untuk konteks keterampilan dan sintaks input. Ini adalah deskripsi lengkap tentang bahasa ekspresi yang digunakan untuk membuat jalur ke simpul dalam dokumen yang diperkaya.
Keterampilan Azure AI Search dapat menggunakan dan memperkaya data yang berasal dari sumber data dan dari output keterampilan lain. Himpunan kerja data yang mewakili status pekerjaan pengindeks saat ini untuk dokumen saat ini dimulai dari data mentah yang berasal dari sumber data dan secara progresif diperkaya dengan setiap data output perulangan keterampilan. Data tersebut diatur secara internal dalam struktur seperti pohon yang dapat dikueri untuk digunakan sebagai input keterampilan atau ditambahkan ke indeks. Simpul di pohon bisa menjadi nilai sederhana seperti string dan angka, array, atau objek kompleks dan bahkan file biner. Bahkan nilai sederhana dapat diperkaya dengan informasi terstruktur tambahan. Misalnya, string dapat diannotasi dengan informasi tambahan yang disimpan di bawahnya di pohon pengayaan. Ekspresi yang digunakan untuk mengkueri struktur internal tersebut menggunakan sintaks kaya yang dirinci dalam artikel ini. Struktur data yang diperkaya dapat diperiksa dari sesi debug. Ekspresi yang mengkueri struktur juga dapat diuji dari sesi debug.
Sepanjang artikel, kita akan menggunakan data yang diperkaya berikut sebagai contoh. This data is typical of the kind of structure you would get when enriching a document using a skillset with OCR, key phrase extraction, text translation, language detection, and entity recognition skills, as well as a custom tokenizer skill.
Path | Value |
---|---|
document |
|
merged_content |
"Studi BMN 110 pada Pasien Anak"... |
keyphrases |
|
[0] |
"Studi BMN" |
[1] |
"Syndrome" |
[2] |
"Pediatric Patients" |
... | |
locations |
|
[0] |
"IVA" |
translated_text |
"Étude de BMN 110 chez les pasien pédiatriques"... |
entities |
|
[0] |
|
category |
"Organization" |
subcategory |
null |
confidenceScore |
0.72 |
length |
3 |
offset |
9 |
text |
"BMN" |
... | |
organizations |
|
[0] |
"BMN" |
language |
"en" |
normalized_images |
|
[0] |
|
layoutText |
... |
text |
|
words |
|
[0] |
"Study" |
[1] |
"of" |
[2] |
"BMN" |
[3] |
"110" |
... | |
[1] |
|
layoutText |
... |
text |
|
words |
|
[0] |
"it" |
[1] |
"is" |
[2] |
"certainly" |
... | |
... | |
... |
Document root
Semua data berada di bawah satu elemen akar, yang jalurnya adalah "/document"
. Elemen akar adalah konteks default untuk keterampilan.
Simple paths
Jalur sederhana melalui dokumen yang diperkaya internal dapat diekspresikan dengan token sederhana yang dipisahkan oleh garis miring. Sintaks ini mirip dengan spesifikasi JSON Pointer.
Object properties
Properti simpul yang mewakili objek menambahkan nilainya ke pohon di bawah nama properti. Nilai-nilai tersebut dapat diperoleh dengan menambahkan nama properti sebagai token yang dipisahkan oleh garis miring:
Expression | Value |
---|---|
/document/merged_content/language |
"en" |
Token nama properti peka huruf besar/kecil.
Indeks item array
Elemen tertentu dari array dapat dirujuk dengan menggunakan indeks numeriknya seperti nama properti:
Expression | Value |
---|---|
/document/merged_content/keyphrases/1 |
"Syndrome" |
/document/merged_content/entities/0/text |
"BMN" |
Escape sequences
Ada beberapa karakter yang memiliki arti khusus dan perlu diloloskan jika harus ditafsirkan as-is alih-alih elemen sintaksis. Karakter-karakter ini termasuk #
, /
, dan ~
antara lain.
Escape sequence | Arti khusus (penggunaan dalam sintaks jalur) | Example |
---|---|---|
~0 |
Digunakan untuk melarikan diri ~ |
"~0" untuk ~ , di mana "~/documents" menjadi "~0~1documents" |
~1 |
Digunakan untuk melarikan diri / |
"~1" untuk / , di mana "~/documents" menjadi "~0~1documents" |
~2 |
Digunakan untuk secara generik untuk menghindari urutan arbitrer (termasuk tetapi tidak terbatas # pada dan * ) |
"~2#~2" di mana "readme#requirements" menjadi "readme~2#~2requirements" |
Array enumeration
Array nilai dapat diperoleh menggunakan '*'
token:
Expression | Value |
---|---|
/document/normalized_images/0/text/words/* |
["Study", "of", "BMN", "110" ...] |
Token '*'
tidak harus berada di akhir jalur. Dimungkinkan untuk menghitung semua simpul yang cocok dengan jalur dengan bintang di tengah atau dengan beberapa bintang:
Expression | Value |
---|---|
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...] |
Contoh ini mengembalikan daftar datar semua simpul yang cocok.
Dimungkinkan untuk mempertahankan lebih banyak struktur dan mendapatkan array terpisah untuk kata-kata setiap halaman dengan menggunakan '#'
token alih-alih token kedua '*'
:
Expression | Value |
---|---|
/document/normalized_images/*/text/words/# |
[["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...] |
Token '#'
mengekspresikan bahwa array harus diperlakukan sebagai nilai tunggal alih-alih dijumlahkan.
Menghitung array dalam konteks
Seringkali berguna untuk memproses setiap elemen array dalam isolasi dan memiliki serangkaian input dan output keterampilan yang berbeda untuk masing-masing elemen.
Ini dapat dilakukan dengan mengatur konteks keterampilan ke enumerasi alih-alih default "/document"
.
Dalam contoh berikut, kami menggunakan salah satu ekspresi input yang kami gunakan sebelumnya, tetapi dengan konteks berbeda yang mengubah nilai yang dihasilkan.
Context | Expression | Values |
---|---|---|
/document/normalized_images/* |
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ...] ["it", "is", "certainly" ...] ... |
Untuk kombinasi konteks dan input ini, keterampilan dijalankan sekali untuk setiap gambar yang dinormalisasi: sekali untuk "/document/normalized_images/0"
dan sekali untuk "/document/normalized_images/1"
. Dua nilai input yang sesuai dengan setiap eksekusi keterampilan dirinci dalam kolom nilai.
Saat menghitung array dalam konteks, output apa pun yang dihasilkan keterampilan juga akan ditambahkan ke dokumen sebagai pengayaan konteks.
Dalam contoh di atas, output bernama "out"
memiliki nilainya untuk setiap eksekusi yang ditambahkan ke dokumen masing-masing di bawah "/document/normalized_images/0/out"
dan "/document/normalized_images/1/out"
.
Literal values
Input keterampilan dapat mengambil nilai harfiah sebagai inputnya alih-alih nilai dinamis yang dikueri dari dokumen yang ada. Ini dapat dicapai dengan awalan nilai dengan tanda sama dengan. Nilai dapat berupa angka, string, atau Boolean.
Nilai string dapat diapit dalam tanda kutip tunggal '
atau ganda "
.
Expression | Value |
---|---|
=42 |
42 |
=2.45E-4 |
0.000245 |
="some string" |
"some string" |
='some other string' |
"some other string" |
="unicod\u0065" |
"unicode" |
=false |
false |
Dalam array baris
Jika input keterampilan tertentu memerlukan array data, tetapi data direpresentasikan sebagai nilai tunggal saat ini atau Anda perlu menggabungkan beberapa nilai tunggal yang berbeda ke dalam bidang array, maka Anda dapat membuat nilai array sebaris sebagai bagian dari ekspresi input keterampilan dengan membungkus daftar ekspresi yang dipisahkan koma dalam tanda kurung ([
dan ]
). Nilai array dapat berupa kombinasi jalur ekspresi atau nilai harfiah sesuai kebutuhan. Anda juga dapat membuat array berlapis dalam array dengan cara ini.
Expression | Value |
---|---|
=['item'] |
["item"] |
=[$(/document/merged_content/entities/0/text), 'item'] |
["BMN", "item"] |
=[1, 3, 5] |
[1, 3, 5] |
=[true, true, false] |
[benar, benar, salah] |
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] |
[["BMN", "item"], ["item2", "Syndrome"]] |
Jika keterampilan memiliki konteks yang menjelaskan untuk menjalankan keterampilan per input array (artinya, bagaimana "context": "/document/pages/*"
keterampilan berjalan sekali per "halaman" di pages
) lalu meneruskan nilai tersebut sebagai ekspresi sebagai input ke array baris menggunakan salah satu nilai tersebut sekaligus.
Misalnya dengan data sampel kami yang diperkaya, jika keterampilan context
Anda adalah /document/merged_content/keyphrases/*
dan kemudian Anda membuat array sebaris dari berikut =['key phrase', $(/document/merged_content/keyphrases/*)]
pada input keterampilan itu, maka keterampilan dijalankan tiga kali, sekali dengan nilai ["frasa kunci", "Studi BMN"], yang lain dengan nilai ["frasa kunci", "Sindrom"], dan akhirnya dengan nilai ["frasa kunci", "Pasien Anak"]. Nilai "frasa kunci" harfiah tetap sama setiap kali, tetapi nilai jalur ekspresi berubah dengan setiap eksekusi keterampilan.
Composite expressions
Dimungkinkan untuk menggabungkan nilai bersama-sama menggunakan operator unary, biner, dan ternary.
Operator dapat menggabungkan nilai dan nilai harfiah yang dihasilkan dari evaluasi jalur.
Saat digunakan di dalam ekspresi, jalur harus diapit antara "$("
dan ")"
.
Boolean tidak '!'
Expression | Value |
---|---|
=!false |
true |
Negatif '-'
Expression | Value |
---|---|
=-42 |
-42 |
=-$(/document/merged_content/entities/0/offset) |
-9 |
Penambahan '+'
Expression | Value |
---|---|
=2+2 |
4 |
=2+$(/document/merged_content/entities/0/offset) |
11 |
Pengurangan '-'
Expression | Value |
---|---|
=2-1 |
1 |
=$(/document/merged_content/entities/0/offset)-2 |
7 |
Perkalian '*'
Expression | Value |
---|---|
=2*3 |
6 |
=$(/document/merged_content/entities/0/offset)*2 |
18 |
Divisi '/'
Expression | Value |
---|---|
=3/2 |
1.5 |
=$(/document/merged_content/entities/0/offset)/3 |
3 |
Modulo '%'
Expression | Value |
---|---|
=15%4 |
3 |
=$(/document/merged_content/entities/0/offset)%2 |
1 |
Perangkaian string '+'
Expression | Value |
---|---|
="Hello," + "world!" |
"Hello, world!" |
=$(/document/merged_content/entities/0/text) + $(/document/merged_content/entities/0/category) |
"BMN Organization" |
Kurang dari, kurang dari atau sama dengan, lebih besar dari dan lebih besar dari atau sama dengan '<'
'<='
'>'
'>='
Expression | Value |
---|---|
=15<4 |
false |
=4<=4 |
true |
=15>4 |
true |
=1>=2 |
false |
Kesetaraan dan ketidaksetaraan '=='
'!='
Expression | Value |
---|---|
=15==4 |
false |
=4==4 |
true |
=15!=4 |
true |
=1!=1 |
false |
Operasi logis dan, atau dan eksklusif atau '&&'
'||'
'^'
Expression | Value |
---|---|
=true&&true |
true |
=true&&false |
false |
=true||true |
true |
=true||false |
true |
=false||false |
false |
=true^false |
true |
=true^true |
false |
Operator ternary '?:'
Dimungkinkan untuk memberikan input nilai yang berbeda berdasarkan evaluasi ekspresi Boolean menggunakan operator ternary.
Expression | Value |
---|---|
=true?"true":"false" |
"true" |
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" |
"nine" |
Tanda kurung dan prioritas operator
Operator dievaluasi dengan prioritas yang sesuai dengan konvensi biasa: operator unary, kemudian perkalian, pembagian dan modulo, kemudian penambahan dan pengurangan, kemudian perbandingan, kemudian kesetaraan, dan kemudian operator logis. Aturan asokiativitas biasa juga berlaku.
Tanda kurung dapat digunakan untuk mengubah atau membedakan urutan evaluasi.
Expression | Value |
---|---|
=3*2+5 |
11 |
=3*(2+5) |
21 |