Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Note
Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.
Az Azure AI Keresés az API-ban OData-kifejezéseket használ paraméterekként. A leggyakrabban OData-kifejezéseket használnak a $orderby és $filter paraméterekhez. Ezek a kifejezések összetettek lehetnek, amelyek több záradékot, függvényt és operátort tartalmaznak. Az Azure AI Keresés REST API számos részén azonban még az egyszerű OData-kifejezések, például a tulajdonságútvonalak is használhatók. Az elérésiút-kifejezések például összetett mezők almezőire hivatkoznak az API-ban mindenhol, például ha almezőket sorolnak fel egy javaslattevőben, egy pontozófüggvényben, a $select paraméterben vagy akár a lucene-lekérdezésekben végzett mezős keresésben.
Ez a cikk az OData-kifejezések összes formáját ismerteti formális nyelvtan használatával. Emellett egy interaktív diagram is segíti a nyelvtan vizuális felfedezését.
Formális nyelvhelyesség
Az Azure AI Keresés által támogatott OData nyelv részhalmazát egy EBNF (Extended Backus-Naur Form) nyelvhelyesség használatával ismertethetjük. A szabályok a "felülről lefelé" vannak felsorolva, kezdve a legösszetettebb kifejezésekkel, és primitívebb kifejezésekre bontják őket. Felül az Azure AI Keresés REST API adott paramétereinek megfelelő nyelvtani szabályok találhatók:
-
$filter, amelyet afilter_expressionszabály határoz meg. -
$orderby, amelyet aorder_by_expressionszabály határoz meg. -
$select, amelyet aselect_expressionszabály határoz meg. - A szabály által definiált
field_pathmezőútvonalak. Az API egészében mezők elérési útjait használja. Hivatkozhatnak egy index legfelső szintű mezőire, vagy egy vagy több összetett mezőelődéssel rendelkező almezőkre.
Miután az EBNF, egy böngészhető szintaxis diagram következik, amely lehetővé teszi azt, hogy interaktívan felfedezze a nyelvtant és a szabályok közötti kapcsolatokat.
/* Top-level rules */
filter_expression ::= boolean_expression
order_by_expression ::= order_by_clause(',' order_by_clause)*
select_expression ::= '*' | field_path(',' field_path)*
field_path ::= identifier('/'identifier)*
/* Shared base rules */
identifier ::= [a-zA-Z_][a-zA-Z_0-9]*
/* Rules for $orderby */
order_by_clause ::= (field_path | sortable_function) ('asc' | 'desc')?
sortable_function ::= geo_distance_call | 'search.score()'
/* Rules for $filter */
boolean_expression ::=
collection_filter_expression
| logical_expression
| comparison_expression
| boolean_literal
| boolean_function_call
| '(' boolean_expression ')'
| variable
/* This can be a range variable in the case of a lambda, or a field path. */
variable ::= identifier | field_path
collection_filter_expression ::=
field_path'/all(' lambda_expression ')'
| field_path'/any(' lambda_expression ')'
| field_path'/any()'
lambda_expression ::= identifier ':' boolean_expression
logical_expression ::=
boolean_expression ('and' | 'or') boolean_expression
| 'not' boolean_expression
comparison_expression ::=
variable_or_function comparison_operator constant |
constant comparison_operator variable_or_function
variable_or_function ::= variable | function_call
comparison_operator ::= 'gt' | 'lt' | 'ge' | 'le' | 'eq' | 'ne'
/* Rules for constants and literals */
constant ::=
string_literal
| date_time_offset_literal
| integer_literal
| float_literal
| boolean_literal
| 'null'
string_literal ::= "'"([^'] | "''")*"'"
date_time_offset_literal ::= date_part'T'time_part time_zone
date_part ::= year'-'month'-'day
time_part ::= hour':'minute(':'second('.'fractional_seconds)?)?
zero_to_fifty_nine ::= [0-5]digit
digit ::= [0-9]
year ::= digit digit digit digit
month ::= '0'[1-9] | '1'[0-2]
day ::= '0'[1-9] | [1-2]digit | '3'[0-1]
hour ::= [0-1]digit | '2'[0-3]
minute ::= zero_to_fifty_nine
second ::= zero_to_fifty_nine
fractional_seconds ::= integer_literal
time_zone ::= 'Z' | sign hour':'minute
sign ::= '+' | '-'
/* In practice integer literals are limited in length to the precision of
the corresponding EDM data type. */
integer_literal ::= sign? digit+
float_literal ::=
sign? whole_part fractional_part? exponent?
| 'NaN'
| '-INF'
| 'INF'
whole_part ::= integer_literal
fractional_part ::= '.'integer_literal
exponent ::= 'e' sign? integer_literal
boolean_literal ::= 'true' | 'false'
/* Rules for functions */
function_call ::=
geo_distance_call |
boolean_function_call
geo_distance_call ::=
'geo.distance(' variable ',' geo_point ')'
| 'geo.distance(' geo_point ',' variable ')'
geo_point ::= "geography'POINT(" lon_lat ")'"
lon_lat ::= float_literal ' ' float_literal
boolean_function_call ::=
geo_intersects_call |
search_in_call |
search_is_match_call
geo_intersects_call ::=
'geo.intersects(' variable ',' geo_polygon ')'
/* You need at least four points to form a polygon, where the first and
last points are the same. */
geo_polygon ::=
"geography'POLYGON((" lon_lat ',' lon_lat ',' lon_lat ',' lon_lat_list "))'"
lon_lat_list ::= lon_lat(',' lon_lat)*
search_in_call ::=
'search.in(' variable ',' string_literal(',' string_literal)? ')'
/* Note that it is illegal to call search.ismatch or search.ismatchscoring
from inside a lambda expression. */
search_is_match_call ::=
'search.ismatch'('scoring')?'(' search_is_match_parameters ')'
search_is_match_parameters ::=
string_literal(',' string_literal(',' query_type ',' search_mode)?)?
query_type ::= "'full'" | "'simple'"
search_mode ::= "'any'" | "'all'"
Szintaxisdiagram
Az Azure AI Keresés által támogatott OData nyelvhelyesség vizuális megismeréséhez próbálja ki az interaktív szintaxisdiagramot: