Azure Yapay Zeka Arama'teki OData koleksiyon işleçleri - any ve all

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.
    • all kullanan bir ifade, koşul koleksiyonun her öğesi için doğruysa true değerini döndürür.
    • Bir any ifadesi, koşul koleksiyonun en az bir öğesi için doğruysa true dö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, true döndürür. Koleksiyon boşsa döndürür false.

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.

Sonraki adımlar