Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Yapay Zeka Arama'te OData mantıksal işleçleri -
Not
Azure Yapay Zeka Arama Azure portalı, REST API'leri ve Azure SDK’ları aracılığıyla kullanılabilir. Ayrıca kuruluş içeriğini Microsoft Foundry portalındaki aracılar için yeniden kullanılabilir, izin kullanan bilgi bankalarına dönüştüren yönetilen bilgi katmanı Foundry IQ'yu temel alır.
Azure Yapay Zeka Arama'teki OData filtre ifadeleri, true veya false olarak değerlendirilen Boole ifadeleridir. Boole cebirinden mantıksal işleçleri kullanarak bir dizi daha basit filtre yazıp bunları oluşturarak karmaşık bir filtre yazabilirsiniz:
-
and: Hem sol hem de sağ alt ifadeleritrueolarak değerlendirildiğindetruesonucunu veren bir ikili işlemci. -
or: İkili işleç, sol veya sağ alt ifadelerinden biritrueolarak değerlendirildiğindetrueolarak değerlendirilir. -
not: Alt ifadesitrueolarak değerlendirildiğindefalseolarak değerlendiren, aksi takdirde tersi geçerli olan tekil operatör.
Bunlar, koleksiyon işleçleri any ve allile birlikte, çok karmaşık arama ölçütlerini ifade eden filtreler oluşturmanıza olanak sağlar.
Sözdizimi
Aşağıdaki EBNF (Genişletilmiş Backus-Naur Formu), mantıksal işleçleri kullanan bir OData ifadesinin dil bilgisini tanımlar.
logical_expression ::=
boolean_expression ('and' | 'or') boolean_expression
| 'not' boolean_expression
Etkileşimli söz dizimi diyagramı da kullanılabilir:
Not
EBNF'nin tamamı için Azure Yapay Zeka Arama için OData ifade söz dizimi başvurusu bölümüne bakın.
İki mantıksal ifade biçimi vardır: iki alt ifadenin bulunduğu ikili ()and/or ve yalnızca bir tane olan birli ( .not Alt ifadeler herhangi bir türde Boole ifadeleri olabilir:
- Türe ait alanlar veya aralık değişkenleri
Edm.Boolean - Fonksiyonlar
Edm.Booleantüründe değerler döndürür, örneğingeo.intersectsveyasearch.ismatch -
Karşılaştırma ifadeleri, örneğin
rating gt 4 -
Koleksiyon ifadeleri, örneğin
Rooms/any(room: room/Type eq 'Deluxe Room') - Boole değişmez değerleri
trueveyafalse. - Diğer mantıksal ifadeler,
and,orvenotkullanılarak yapılmıştır.
Önemli
özellikle lambda ifadelerinin içinde ile and/orher türlü alt ifadenin kullanılamadığı bazı durumlar vardır. Ayrıntılar için bkz Azure Yapay Zeka Arama'te OData koleksiyon işleçleri.
Mantıksal işleçler ve null
Boole ifadelerinin çoğu, işlevler ve karşılaştırmalar gibi, null değerlerini üretemez ve mantıksal işleçler, sabit değere null doğrudan uygulanamaz (örneğin, x and null'e izin verilmez). Ancak, Boole alanları null olabilir, bu nedenle and, or ve not işleçlerinin null varlığında nasıl davrandığını bilmeniz gerekir. Bu, b türünde bir alan olan Edm.Boolean'in yer aldığı aşağıdaki tabloda özetlenmiştir.
| İfade |
b durumu null olduğunda sonuç |
|---|---|
b |
false |
not b |
true |
b eq true |
false |
b eq false |
false |
b eq null |
true |
b ne true |
true |
b ne false |
true |
b ne null |
false |
b and true |
false |
b and false |
false |
b or true |
true |
b or false |
false |
Bir Boole alanı b bir filtre ifadesinde tek başına göründüğünde, sanki b eq true olarak yazılmış gibi davranır, bu nedenle eğer bnull ise, ifade false olarak değerlendirilir. Benzer şekilde, not b gibi not (b eq true) davranır, bu nedenle true olarak değerlendirilir. Bu şekilde, null alanlar ile falseaynı şekilde davranır. Bu, yukarıdaki tabloda gösterildiği gibi and ve or kullanan diğer ifadelerle birleştirildiğinde nasıl davrandıklarıyla tutarlıdır. Buna rağmen, false ile doğrudan karşılaştırma yine de b eq false olarak false şeklinde değerlendirilir. Başka bir deyişle, null Boole ifadelerinde olduğu gibi davransa bile değerine eşit falsedeğildir.
Örnekler
Alanın 3 ile 5 (dahil) arasında olduğu rating belgeleri eşleştirin:
rating ge 3 and rating le 5
Alanının tüm öğelerinin ratings 3'ten küçük veya 5'ten büyük olduğu belgeleri eşleştirin.
ratings/all(r: r lt 3 or r gt 5)
Alanın verilen çokgen içinde olduğu location ve belgenin "genel" terimini içermediği belgeleri eşleştirin.
geo.intersects(location, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))') and not search.ismatch('public')
Taban fiyatı 160'tan az olan deluxe bir odanın bulunduğu Vancouver, Kanada'daki oteller için belgeleri eşleştirin:
Address/City eq 'Vancouver' and Address/Country eq 'Canada' and Rooms/any(room: room/Type eq 'Deluxe Room' and room/BaseRate lt 160)