技能內容和輸入註釋語言
本文是技能內容和輸入語法的參考檔。 這是表達式語言的完整描述,用來建構擴充檔中節點的路徑。
Azure AI 搜尋技能可以使用和 擴充來自數據源的數據,以及來自其他技能輸出的數據。 代表目前檔之索引器工作目前狀態的數據工作集,會從來自數據源的原始數據開始,並以每個技能反覆專案的輸出數據逐步擴充。 該數據會在內部組織成樹狀結構,可查詢以做為技能輸入或新增至索引。 樹狀結構中的節點可以是簡單的值,例如字串和數位、陣列或複雜物件,甚至是二進位檔。 即使是簡單的值也可以透過額外的結構化信息來擴充。 例如,可以使用擴充樹狀結構中儲存的其他資訊來標註字串。 用來查詢內部結構的表示式會使用本文中詳述的豐富語法。 您可以從 偵錯會話檢查擴充的數據結構。 查詢結構的表達式也可以 從偵錯會話進行測試。
在整個文章中,我們將使用下列擴充數據作為範例。 此數據是您在使用具有 OCR 的技能集、關鍵片語擷取、文字翻譯、語言偵測、實體辨識技能和自定義Tokenizer技能擴充檔時,所得到的結構類型。
路徑 | 值 |
---|---|
document |
|
merged_content |
“兒科患者的BMN 110研究”... |
keyphrases |
|
[0] |
“BMN 研究” |
[1] |
“綜合症” |
[2] |
“兒科患者” |
... | |
locations |
|
[0] |
“IVA” |
translated_text |
“Étude de BMN 110 chez les patients pédiatriques”... |
entities |
|
[0] |
|
category |
“組織” |
subcategory |
null |
confidenceScore |
0.72 |
length |
3 |
offset |
9 |
text |
“BMN” |
... | |
organizations |
|
[0] |
“BMN” |
language |
「en」 |
normalized_images |
|
[0] |
|
layoutText |
... |
text |
|
words |
|
[0] |
“研究” |
[1] |
“of” |
[2] |
“BMN” |
[3] |
"110" |
... | |
[1] |
|
layoutText |
... |
text |
|
words |
|
[0] |
“it” |
[1] |
"is" |
[2] |
“當然” |
... | |
... | |
... |
檔根目錄
所有資料都在一個根元素下,路徑為 "/document"
。 根元素是技能的默認內容。
簡單路徑
透過內部擴充檔的簡單路徑可以透過斜線分隔的簡單標記來表示。 此語法類似於 JSON 指標規格。
物件屬性
代表對象的節點屬性,會將其值新增至屬性名稱下的樹狀結構。 藉由附加屬性名稱做為以斜線分隔的令牌,即可取得這些值:
運算式 | 值 |
---|---|
/document/merged_content/language |
"en" |
屬性名稱令牌會區分大小寫。
陣列專案索引
陣列的特定元素可以使用其數值索引來參考,例如屬性名稱:
運算式 | 值 |
---|---|
/document/merged_content/keyphrases/1 |
"Syndrome" |
/document/merged_content/entities/0/text |
"BMN" |
逸出序列
有兩個字元具有特殊意義,而且如果字元出現在表達式中,而且必須解譯為 ,而不是將其特殊意義解譯為 , '/'
則必須逸出:和 '~'
。
這些字元必須分別逸出為 '~0'
和 '~1'
。
陣列舉
您可以使用權杖來取得 '*'
值的陣列:
運算式 | 值 |
---|---|
/document/normalized_images/0/text/words/* |
["Study", "of", "BMN", "110" ...] |
令牌 '*'
不一定位於路徑結尾。 列舉所有符合中間星號路徑或具有多個星號的節點:
運算式 | 值 |
---|---|
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...] |
此範例會傳回所有相符節點的一般清單。
您可以使用權杖而非第二'*'
個'#'
權杖,維護更多結構,並針對每個頁面的單字取得個別數位:
運算式 | 值 |
---|---|
/document/normalized_images/*/text/words/# |
[["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...] |
令牌 '#'
表示陣列應該視為單一值,而不是列舉。
列舉內容中的陣列
在隔離中處理陣列的每個元素,並針對每個元素有不同的技能輸入和輸出,通常很有用。
這可以藉由將技能的內容設定為列舉,而不是預設 "/document"
。
在下列範例中,我們使用之前使用的其中一個輸入表達式,但使用不同的內容來變更產生的值。
上下文 | 運算式 | 值 |
---|---|---|
/document/normalized_images/* |
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ...] ["it", "is", "certainly" ...] ... |
針對此內容和輸入的組合,技能會針對每個標準化影像執行一次:一次和 "/document/normalized_images/0"
一次用於 "/document/normalized_images/1"
。 對應至每個技能執行的兩個輸入值會在 values 數據行中詳述。
列舉內容中的陣列時,技能產生的任何輸出也會新增至文件作為內容的擴充。
在上述範例中,名為 "out"
的輸出會分別在其 和 底下"/document/normalized_images/0/out"
"/document/normalized_images/1/out"
新增至檔的每個執行值。
常值
技能輸入可以接受常值作為其輸入,而不是從現有文件查詢的動態值。 這可以藉由將值前面加上等號來達成。 值可以是數位、字串或布爾值。
字串值可以以單 '
引號或雙 "
引弧括住。
運算式 | 值 |
---|---|
=42 |
42 |
=2.45E-4 |
0.000245 |
="some string" |
"some string" |
='some other string' |
"some other string" |
="unicod\u0065" |
"unicode" |
=false |
false |
複合表達式
您可以使用一元、二元和三元運算符,將值結合在一起。
運算子可以結合路徑評估所產生的常值和值。
在表達式內使用時,路徑應該以 和 ")"
括住"$("
。
布爾值不是 '!'
運算式 | 值 |
---|---|
=!false |
true |
負 '-'
運算式 | 值 |
---|---|
=-42 |
-42 |
=-$(/document/merged_content/entities/0/offset) |
-9 |
除了 '+'
運算式 | 值 |
---|---|
=2+2 |
4 |
=2+$(/document/merged_content/entities/0/offset) |
11 |
減法 '-'
運算式 | 值 |
---|---|
=2-1 |
1 |
=$(/document/merged_content/entities/0/offset)-2 |
7 |
乘法 '*'
運算式 | 值 |
---|---|
=2*3 |
6 |
=$(/document/merged_content/entities/0/offset)*2 |
18 |
劃分 '/'
運算式 | 值 |
---|---|
=3/2 |
1.5 |
=$(/document/merged_content/entities/0/offset)/3 |
3 |
模 '%'
運算式 | 值 |
---|---|
=15%4 |
3 |
=$(/document/merged_content/entities/0/offset)%2 |
1 |
小於、小於或等於、大於和大於或等於 '<'
'<='
'>'
'>='
運算式 | 值 |
---|---|
=15<4 |
false |
=4<=4 |
true |
=15>4 |
true |
=1>=2 |
false |
相等和非相等 '=='
'!='
運算式 | 值 |
---|---|
=15==4 |
false |
=4==4 |
true |
=15!=4 |
true |
=1!=1 |
false |
邏輯作業和、或 和 獨佔或 '&&'
'||'
'^'
運算式 | 值 |
---|---|
=true&&true |
true |
=true&&false |
false |
=true||true |
true |
=true||false |
true |
=false||false |
false |
=true^false |
true |
=true^true |
false |
三元運算子 '?:'
您可以使用三元運算符,根據布爾表達式的評估,提供不同的輸入值。
運算式 | 值 |
---|---|
=true?"true":"false" |
"true" |
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" |
"nine" |
括弧和運算符優先順序
運算符會以符合一般慣例的優先順序進行評估:一元運算元、乘法、除法和模數、加法和減法、比較、相等和邏輯運算符。 通常也會套用關聯性規則。
括號可用來變更或釐清評估順序。
運算式 | 值 |
---|---|
=3*2+5 |
11 |
=3*(2+5) |
21 |