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'teki OData koleksiyon 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 ile kullanılacak bir OData filtre ifadesi yazarken, koleksiyon alanlarına göre filtrelemek genellikle yararlıdır.
any ve all işleçlerini kullanarak bunu gerçekleştirebilirsiniz.
Sözdizimi
Aşağıdaki EBNF (Genişletilmiş Backus-Naur Formu), any veya all kullanan bir OData ifadesinin dil bilgisini tanımlar.
collection_filter_expression ::=
field_path'/all(' lambda_expression ')'
| field_path'/any(' lambda_expression ')'
| field_path'/any()'
lambda_expression ::= identifier ':' boolean_expression
Etkileşimli söz dizimi diyagramı da kullanılabilir:
Not
Tam EBNF için Azure Yapay Zeka Arama'e yönelik OData ifade söz dizimi başvurusuna bakın:
Koleksiyonları filtreleyen üç ifade biçimi vardır.
- İlk ikisi bir koleksiyon alanı üzerinde yinelenir ve koleksiyonun her öğesine lambda ifadesi biçiminde verilen bir koşul uygulanır.
-
allkullanan bir ifade, koşul koleksiyonun her öğesi için doğruysatruedeğerini döndürür. - Bir
anyifadesi, koşul koleksiyonun en az bir öğesi için doğruysatruedöndürür.
-
- Koleksiyon filtresinin üçüncü biçimi, bir koleksiyon alanının boş olup olmadığını test etmek için lambda ifadesi olmadan kullanır
any. Eğer koleksiyonda herhangi bir öğe varsa,truedöndürür. Koleksiyon boşsa döndürürfalse.
Koleksiyon filtresindeki lambda ifadesi , bir programlama dilindeki döngünün gövdesi gibidir. Yineleme sırasında koleksiyonun geçerli öğesini tutan aralık değişkeni olarak adlandırılan bir değişken tanımlar. Ayrıca, koleksiyonun her öğesi için aralık değişkenine uygulanacak filtre ölçütü olan başka bir boole ifadesi tanımlar.
Örnekler
Alanı tam olarak "wifi" dizesini içeren belgeleri tags eşleştirin:
tags/any(t: t eq 'wifi')
Alanın her öğesinin ratings 3 ile 5 (dahil) arasında olduğu belgeleri eşleştirin:
ratings/all(r: r ge 3 and r le 5)
Alandaki coğrafi koordinatlardan locations herhangi birinin verilen çokgen içinde olduğu belgeleri eşleştirin:
locations/any(loc: geo.intersects(loc, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))'))
Alanın boş olduğu rooms belgeleri eşleştir:
not rooms/any()
"Alanı "tv" içeren ve rooms/amenities 100'den küçük olan (tüm odalar için) rooms/baseRate belgelerini eşleştirin:"
rooms/all(room: room/amenities/any(a: a eq 'tv') and room/baseRate lt 100.0)
Sınırlamalar
Filtre ifadelerinin her özelliği bir lambda ifadesinin gövdesinde kullanılamaz. Sınırlamalar, filtrelemek istediğiniz koleksiyon alanının veri türüne bağlı olarak farklılık gösterir. Aşağıdaki tabloda sınırlamalar özetlemektedir.
| Veri türü | ile lambda ifadelerinde izin verilen özellikler any |
ile lambda ifadelerinde izin verilen özellikler all |
|---|---|---|
Collection(Edm.ComplexType) |
search.ismatch ve search.ismatchscoring dışındaki her şey |
Aynısı |
Collection(Edm.String) |
eq veya search.in ile karşılaştırmalar Alt ifadeleri or ile birleştirme |
ne veya not search.in() ile karşılaştırmalar Alt ifadeleri and ile birleştirme |
Collection(Edm.Boolean) |
eq veya ne ile karşılaştırmalar |
Aynısı |
Collection(Edm.GeographyPoint) |
geo.distance ile veya lt ya da le ile kullanma geo.intersects Alt ifadeleri or ile birleştirme |
geo.distance ile veya gt ya da ge ile kullanma not geo.intersects(...) Alt ifadeleri and ile birleştirme |
Collection(Edm.DateTimeOffset), Collection(Edm.Double), Collection(Edm.Int32), Collection(Edm.Int64) |
eq, ne, lt, gt, le veya ge kullanan karşılaştırmalar Karşılaştırmaları or kullanarak diğer alt ifadelerle birleştirme ne hariç diğer alt ifadeleri and kullanarak karşılaştırmaları birleştirme Disjunctive Normal Form (DNF) içinde ve and birleşimlerini kullanan ifadeler or |
eq, ne, lt, gt, le veya ge kullanan karşılaştırmalar Karşılaştırmaları and kullanarak diğer alt ifadelerle birleştirme eq hariç diğer alt ifadeleri or kullanarak karşılaştırmaları birleştirme and ve or kombinasyonlarını kullanan Bağlayıcı Normal Form (CNF) ifadeleri |
Bu sınırlamalar ve örnekler hakkında daha fazla bilgi için bkz . Azure Yapay Zeka Arama'te koleksiyon filtreleriyle ilgili sorunları giderme. Bu sınırlamaların neden mevcut olduğu hakkında daha ayrıntılı bilgi için bkz . Azure Yapay Zeka Arama'te koleksiyon filtrelerini anlama.