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.
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.
Important
(önizleme) olarak işaretlenen özellikler, özellikler veya özellikler hizmet düzeyi sözleşmesi kapsamında değildir, üretim iş yükleri için önerilmez ve genel kullanıma sunulmadan önce değişebilir veya kısıtlanabilir. Azure Yapay Zeka Arama önizleme terimleri, tek başına veya genel kullanıma sunulan bir özelliğin parçası olsun, tüm önizleme işlevleri için geçerlidir.
Bu bölüm, temel kullanımı ve diğer senaryoları gösteren örneklerle çok yönlü gezinti yapılandırmasını genişletir.
Facetable alanlar bir dizinde tanımlanır, ancak facet parametreleri ve ifadeleri sorgu isteklerinde tanımlanır. Modellenebilir alanları olan bir dizininiz varsa, var olan dizinlerde model hiyerarşileri (önizleme), model toplamaları (önizleme) ve model filtreleri (önizleme) deneyebilirsiniz.
Facet parametreleri ve söz dizimi
API'ye bağlı olarak model sorgusu genellikle arama sonuçlarına uygulanan model ifadeleri dizisidir. Her model ifadesi, isteğe bağlı olarak virgülle ayrılmış ad-değer çiftlerinin listesini içeren bir model alanı adı içerir.
- model sorgusu , model özelliği içeren bir sorgu isteğidir.
-
facetable alan, arama dizininde
facetableözelliğiyle özniteliklendirilen bir alan tanımıdır. - count, arama sonuçlarında bulunan her bir faset için eşleşme sayısıdır.
Aşağıdaki tabloda örneklerde kullanılan faset parametreleri açıklanmaktadır.
| Facet parametresi | Açıklama | Kullanım | Örnek |
|---|---|---|---|
count |
Yapı başına faset terimleri sayısı üst sınırı. | Tamsayı. Varsayılan değer 10'dur. Üst sınır yoktur, ancak özellikle çok sayıda benzersiz terim içeren yüzeysel alan yüksek değerlere sahip olduğunda performansı olumsuz etkiler. Bunun nedeni facet sorgularının parçalar arasında dağıtıldığı yoldur. Tüm shard’lar arasında doğru bir sayı elde etmek için, count değerini sıfıra veya facetable alandaki benzersiz değerlerin sayısına eşit ya da daha büyük bir değere ayarlayabilirsiniz. Uzlaşım, gecikme süresini artırır. |
Tags,count:5 ölçütlü gezinti yanıtını en fazla ölçüt sayısına sahip 5 ölçüt grubu ile sınırlar, ancak bunlar herhangi bir sırada olabilir. |
sort |
Model demetlerinin sırasını belirler. | Geçerli değerler : count, -count, value, -value.
count'yi fasetleri en büyükten en küçüğe listelemek için kullanın. Artan düzende sıralamak için kullanın -count (en küçükten büyüğe).
value kullanarak faset değerine göre alfasayısal olarak artan sırada sıralayın. Değere göre azalan sıralamak için kullanın -value . |
"facet=Category,count:3,sort:count" arama sonuçlarında, her Kategorideki eşleşme sayısına göre azalan sırayla listelenen ilk üç faset grubunu alır. Eğer en üst üç kategori Bütçe, Uzun Konaklama ve Lüks ise ve Bütçe 5, Uzun Konaklama 6, Lüks 4 isabet almışsa, kategoriler Uzun Konaklama, Bütçe, Lüks olarak sıralanır. Başka bir örnek de şudur:"facet=Rating,sort:-value" Olası tüm derecelendirmeler için değere göre azalan sırada özellikler oluşturur. Derecelendirmeler 1'den 5'e kadarsa, her derecelendirmeyle eşleşen belge sayısına bakılmadan, özellikler sırasıyla 5, 4, 3, 2, 1 olarak sıralanır. |
values |
Faset etiketleri için değerler sağlar. | Dinamik bir özellik giriş değerleri kümesini belirtmek için boru ile ayrılmış sayısal veya Edm.DateTimeOffset değerleri olarak ayarlayın. Beklenen sonuçları almak için değerlerin sıralı ve artan sırada listelenmesi gerekir. |
"facet=baseRate,values:10 | 20" üç faset kovası üretir: taban hızı 0'dan 10'a kadar olan için bir, 10'dan başlayarak 20 hariç için bir ve 20 ve üzeri için bir tane. Bir dize "facet=lastRenovationDate,values:2024-02-01T00:00:00Z" iki faset grubu üretir: biri Şubat 2024'ten önce yenilenen oteller için, diğeri de 1 Şubat 2024 ve sonrasında yenilenen oteller için. |
interval |
Özelliklerin aralıklar halinde gruplandırılabileceği durumlar için bir aralık dizisi sunar. | Sayılar için sıfırdan büyük bir tamsayı aralığı veya tarih saat değerleri için dakika, saat, gün, hafta, ay, çeyrek, yıl. |
"facet=baseRate,interval:100" 100 boyutlu temel oran aralıklarına göre özellik sepetleri üretir. Taban oranların tümü 60 ile 600 ABD doları arasındaysa, 0-100, 100-200, 200-300, 300-400, 400-500 ve 500-600 için kesit dilimleri vardır. Dize "facet=lastRenovationDate,interval:year", bir otelin yenilendiği her yıl için bir faset kovası üretir. |
timeoffset |
Zaman sınırlarını ayarlarken hesaba katmak için UTC saat uzaklığını belirtir. | ([+-]hh:mm, [+-]hhmm, or [+-]hh) olarak ayarlayın. Kullanılırsa, timeoffset parametresi aralık seçeneğiyle ve yalnızca türünde Edm.DateTimeOffsetbir alana uygulandığında birleştirilmelidir. |
"facet=lastRenovationDate,interval:day,timeoffset:-01:00" saat 01:00:00 UTC (hedef saat diliminde gece yarısı) saatinde başlayan gün sınırını kullanır. |
count ve sort aynı model belirtiminde kombine edilebilir, ancak interval veya values ile birleştiremezler.
interval ve values birlikte birleştirilemiyor.
Tarih ve saat üzerindeki aralık öz nitelikleri timeoffset belirtilmezse UTC saatine göre hesaplanır. Örneğin, için "facet=lastRenovationDate,interval:day"gün sınırı 00:00:00 UTC'de başlar.
Temel yüzey örneği
Aşağıdaki faset sorguları hotels-sample dizininde uygulanır. JSON sorgusuna yapıştırmak için Arama Gezgini'nde JSON görünümünü kullanabilirsiniz. Başlarken yardım için bkz. Arama sonuçlarına çok yönlü gezinti ekleme.
Bu ilk sorgu Kategoriler, Derecelendirmeler, Etiketler ve belirli aralıklardaki baseRate değerlerine sahip odalar için özellikleri alır. Rooms koleksiyonunun bir alt alanındaki son elementi fark edin. Fasetler ara belgeleri (Odalar) değil üst belgeleri (Oteller) sayar, bu nedenle yanıt, her fiyat kategorisinde herhangi bir odası olan otellerin sayısını belirler.
POST /indexes/hotels-sample/docs/search?api-version={{api_version}}
{
"search": "ocean view",
"facets": [ "Category", "Rating", "Tags", "Rooms/BaseRate,values:80|150|220" ],
"count": true
}
Bu ikinci örnek, kullanıcı Derecelendirme 3 ve "Motel" kategorisini seçtikten sonra önceki fasetli sorgu sonucunu daraltmak için bir filtre kullanır.
POST /indexes/hotels-sample/docs/search?api-version={{api_version}}
{
"search": "water view",
"facets": [ "Tags", "Rooms/BaseRate,values:80|150|220" ],
"filter": "Rating eq 3 and Category eq 'Motel'",
"count": true
}
Üçüncü örnek, sorguda döndürülen benzersiz terimler için bir üst sınır ayarlar. Varsayılan değer 10'dur, ancak model özniteliğindeki count parametresini kullanarak bu değeri artırabilir veya azaltabilirsiniz. Bu örnek, şehir için 5 ile sınırlı olan özellikleri döndürür.
POST /indexes/hotels-sample/docs/search?api-version={{api_version}}
{
"search": "view",
"facets": [ "Address/City,count:5" ],
"count": true
}
Bu örnek, "Kategori", "Etiketler" ve "Derecelendirme" için üç boyut göstermektedir ve "Etiketler" üzerinde bir sayım geçersiz kılma ve "Derecelendirme" için bir aralık geçersiz kılma bulunmaktadır, ki bu da dizinde çift olarak saklanır.
POST https://{{service_name}}.search.windows.net/indexes/hotels-sample/docs/search?api-version={{api_version}}
{
"search": "*",
"facets": [
"Category",
"Tags,count:5",
"Rating,values:1|2|3|4|5"
],
"count": true
}
Her fasetli gezinim ağacı için, sorgu tarafından bulunan ilk 10 faset örneğinin varsayılan sınır mevcuttur. Bu varsayılan değer listesini yönetilebilir bir boyutta tuttuğundan gezinti yapıları için mantıklıdır. "Count" değerine bir değer atayarak varsayılan değeri geçersiz kılabilirsiniz. Örneğin, "Tags,count:5" Etiketler bölümünün altındaki etiket sayısını ilk beşe indirir.
Yalnızca Sayısal ve DateTime değerleri için, sonuçları bitişik aralıklara (sayısal değerlere veya zaman aralıklarına göre aralıklar) ayırmak için model alanındaki değerleri (örneğin, facet=Rating,values:1|2|3|4|5) açıkça ayarlayabilirsiniz. Alternatif olarak, facet=Rating,interval:1 içinde "interval" ekleyebilirsiniz.
Her aralık, başlangıç noktası olarak 0, son nokta olarak listeden bir değer kullanılarak oluşturulur ve ardından önceki aralığın kaldırılmasıyla ayrık aralıklar oluşturulur.
Benzersiz değerler örneği
Her facetable alan için benzersiz bir değer sayısı döndüren bir sorgu formüle edebilirsiniz. Bu örnek, tüm belgelerde eşleşen boş veya nitelenmemiş bir sorgu ("search": "*") formüle eder, ancak top sıfıra ayarlanarak sonuçlar gösterilmeden yalnızca sayıların elde edilmesi sağlanır.
Kısa olması için, bu sorgu hotels-sample dizininde olarak facetable işaretlenmiş yalnızca iki alan içerir.
POST https://{{service_name}}.search.windows.net/indexes/hotels-sample/docs/search?api-version={{api_version}}
{
"search": "*",
"count": true,
"top": 0,
"facets": [
"Category", "Address/StateProvince""
]
}
Bu sorgudan alınan sonuçlar aşağıdaki gibidir:
{
"@odata.count": 50,
"@search.facets": {
"Address/StateProvince": [
{
"count": 9,
"value": "WA"
},
{
"count": 6,
"value": "CA "
},
{
"count": 4,
"value": "FL"
},
{
"count": 3,
"value": "NY"
},
{
"count": 3,
"value": "OR"
},
{
"count": 3,
"value": "TX"
},
{
"count": 2,
"value": "GA"
},
{
"count": 2,
"value": "MA"
},
{
"count": 2,
"value": "TN"
},
{
"count": 1,
"value": "AZ"
}
],
"Category": [
{
"count": 13,
"value": "Budget"
},
{
"count": 12,
"value": "Suite"
},
{
"count": 7,
"value": "Boutique"
},
{
"count": 7,
"value": "Resort and Spa"
},
{
"count": 6,
"value": "Extended-Stay"
},
{
"count": 5,
"value": "Luxury"
}
]
},
"value": []
}
Faset hiyerarşisi örneği (önizleme)
en son önizleme REST API veya Azure portalını kullanarak, > ve ; işleçlerini kullanarak model hiyerarşisi yapılandırabilirsiniz.
| Işleç | Açıklama |
|---|---|
> |
İç içe geçişli (hiyerarşik) operatör bir üst-alt ilişkiyi belirtir. |
; |
Noktalı virgül operatörü, aynı hiyerarşi seviyesindeki birden çok alanı belirtir ve bu alanların hepsi aynı üst öğenin alt öğeleridir. Üst öğe yalnızca bir alan içermelidir. Hem ana alan hem de alt alan facetable olmalıdır. |
Faset hiyerarşilerini içeren faset ifadesindeki işlemlerin sırası şunlardır:
- Faset alanı için faset parametrelerini ayıran seçenekler işleci (virgül
,), örneğin içindeki virgülRooms/BaseRate,values - Parantezler, örneğin
(Rooms/BaseRate,values:50 ; Rooms/Type)öğesini içine alan parantezler gibi. - İç içe yerleştirme işleci (açılı köşeli ayraç
>) - Ekleme işleci (noktalı virgül
;), bu bölümde ikinci bir örnekte"Tags>(Rooms/BaseRate,values:50 ; Rooms/Type)"gösterilmektedir; burada, iki alt yüz Etiketler ana öğesinin altında eştir.
Parantezlerin, iç içe yerleştirme ve ekleme işlemlerinden önce işlendiğine dikkat edin: A > B ; C ile A > (B ; C) öğeleri farklı olabilir.
Özellik hiyerarşileri için birkaç örnek vardır. İlk örnek, yalnızca birkaç belge döndüren ve tam yanıtı görüntülemeye yardımcı olan bir sorgudur. Facetler, ara alt belgeleri (Odalar) değil üst belgeleri (Oteller) sayar, bu nedenle yanıt, her facet kümesinde herhangi bir odası olan otel sayısını belirler.
POST /indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
"search": "ocean",
"facets": ["Address/StateProvince>Address/City", "Tags>Rooms/BaseRate,values:50"],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
Bu sorgudan alınan sonuçlar aşağıdaki gibidir. İki otel de havuza sahiptir. Diğer etiketler için sadece bir otel bu olanağı sağlar.
{
"@odata.count": 2,
"@search.facets": {
"Tags": [
{
"value": "pool",
"count": 2,
"@search.facets": {
"Rooms/BaseRate": [
{
"to": 50,
"count": 0
},
{
"from": 50,
"count": 2
}
]
}
},
{
"value": "air conditioning",
"count": 1,
"@search.facets": {
"Rooms/BaseRate": [
{
"to": 50,
"count": 0
},
{
"from": 50,
"count": 1
}
]
}
},
{
"value": "bar",
"count": 1,
"@search.facets": {
"Rooms/BaseRate": [
{
"to": 50,
"count": 0
},
{
"from": 50,
"count": 1
}
]
}
},
{
"value": "restaurant",
"count": 1,
"@search.facets": {
"Rooms/BaseRate": [
{
"to": 50,
"count": 0
},
{
"from": 50,
"count": 1
}
]
}
},
{
"value": "view",
"count": 1,
"@search.facets": {
"Rooms/BaseRate": [
{
"to": 50,
"count": 0
},
{
"from": 50,
"count": 1
}
]
}
}
],
"Address/StateProvince": [
{
"value": "FL",
"count": 1,
"@search.facets": {
"Address/City": [
{
"value": "Tampa",
"count": 1
}
]
}
},
{
"value": "HI",
"count": 1,
"@search.facets": {
"Address/City": [
{
"value": "Honolulu",
"count": 1
}
]
}
}
]
},
"value": [
{
"@search.score": 1.6076145,
"HotelName": "Ocean Water Resort & Spa",
"Description": "New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
"Tags": [
"view",
"pool",
"restaurant"
],
"Address": {
"City": "Tampa",
"StateProvince": "FL"
}
},
{
"@search.score": 1.0594962,
"HotelName": "Windy Ocean Motel",
"Description": "Oceanfront hotel overlooking the beach features rooms with a private balcony and 2 indoor and outdoor pools. Inspired by the natural beauty of the island, each room includes an original painting of local scenes by the owner. Rooms include a mini fridge, Keurig coffee maker, and flatscreen TV. Various shops and art entertainment are on the boardwalk, just steps away.",
"Tags": [
"pool",
"air conditioning",
"bar"
],
"Address": {
"City": "Honolulu",
"StateProvince": "HI"
}
}
]
}
Bu ikinci örnek, öncekini genişleterek birden fazla çocuk bileşeni olan birden fazla üst düzey boyut gösterir. Noktalı virgül (;) işleci her bir alt öğeyi ayırır; buna dikkat edin.
POST /indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
"search": "+ocean",
"facets": ["Address/StateProvince > Address/City", "Tags > (Rooms/BaseRate,values:50 ; Rooms/Type)"],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
Kısalık için kırpılmış kısmi yanıtta, oda taban fiyatı ve türü için alt modeller içeren etiketler gösterilir. Oteller-örnek dizininde, +ocean ile eşleşen otellerin her türden oda ve havuz bulunmaktadır.
{
"@odata.count": 2,
"@search.facets": {
"Tags": [
{
"value": "pool",
"count": 2,
"@search.facets": {
"Rooms/BaseRate": [
{
"to": 50,
"count": 0
},
{
"from": 50,
"count": 2
}
],
"Rooms/Type": [
{
"value": "Budget Room",
"count": 2
},
{
"value": "Deluxe Room",
"count": 2
},
{
"value": "Standard Room",
"count": 2
},
{
"value": "Suite",
"count": 2
}
]
}}]},
...
}
Bu son örnek, iç içe geçme düzeylerini etkileyen parantezler için öncelik kurallarını gösterir. Faset hiyerarşisini bu sırada döndürmek istediğinizi varsayalım.
Address/StateProvince
Address/City
Category
Rating
Bu hiyerarşiyi döndürmek için, Kategori ve Derecelendirme'nin Adres/Şehir altında eşdüzey olduğu bir sorgu oluşturun.
{
"search": "beach",
"facets": [
"Address/StateProvince > (Address/City > (Category ; Rating))"
],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
En içteki parantezleri kaldırdığınızda, > işleci ; işlemcisinden önce değerlendirildiği için, öncelik kuralları dolayısıyla Kategori ve Derecelendirme artık eşdüzey değildir.
{
"search": "beach",
"facets": [
"Address/StateProvince > (Address/City > Category ; Rating)"
],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
Üst düzey üst öğe hala Address/StateProvince şeklindedir, ancak artık Adres/Şehir ve Derecelendirme aynı düzeydedir.
Address/StateProvince
Rating
Address/City
Category
Özellik tabanlı filtreleme örneği (önizleme)
en son önizleme REST API'sini veya Azure portalını kullanarak faset filtrelerini yapılandırabilirsiniz.
Model filtreleme, döndürülen model değerlerini belirtilen normal ifadeyle eşleşenlerle sınırlamanıza olanak tanır. İki yeni parametre, facet alanına uygulanan düzenli bir ifadeyi kabul eder.
-
includeTermFilterfaset değerlerini, normal ifadeyle eşleşen değerlerle filtreler -
excludeTermFilterfaset değerlerini normal ifadeyle eşleşmeyenlerle filtreler
Eğer bir facet dizesi her iki koşulu da karşılıyorsa, excludeTermFilter önceliklidir çünkü kova dizeleri kümesi önce includeTermFilter ile değerlendirilir ve ardından excludeTermFilter ile dışlanır.
Yalnızca düzenli ifadeyle eşleşen faset değerleri döndürülür. Bu parametreleri dize alanlarındaki diğer model seçenekleriyle (örneğin, count, sortve hiyerarşik model oluşturma) birleştirebilirsiniz.
Normal ifade bir JSON dize değeri içinde iç içe geçmiş olduğundan, hem çift tırnak (") hem de ters eğik çizgi (\) karakterlerinden kaçmalısınız. Normal ifadenin kendisi eğik çizgi (/ ) ile sınırlandırılır. Kaçış desenleri hakkında daha fazla bilgi için bkz . Normal ifade araması.
Aşağıdaki örnek, düzenli ifadenizdeki ters eğik çizgi, çift tırnak veya düzenli ifade söz dizimi karakterleri gibi özel karakterlerin nasıl kaçılacağını gösterir.
{
"search": "*",
"facets": ["name,includeTermFilter:/EscapeBackslash\\\OrDoubleQuote\\"OrRegexCharacter\\(/"]
}
Aşağıda Budget ve Extended-Stay otelleriyle eşleşen model filtresinin bir örneği verilmiştir ve Derecelendirme her otel kategorisinin bir çocuğu olarak verilmiştir.
POST /indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
"search": "*",
"facets": ["(Category,includeTermFilter:/(Budget|Extended-Stay)/)>Rating,values:1|2|3|4|5"],
"select": "HotelName, Category, Rating",
"count": true
}
Aşağıdaki örnek kısaltılmış bir yanıttır (otel belgeleri kısa süre için atlanmıştır).
{
"@odata.count": 50,
"@search.facets": {
"Category": [
{
"value": "Budget",
"count": 13,
"@search.facets": {
"Rating": [
{
"to": 1,
"count": 0
},
{
"from": 1,
"to": 2,
"count": 0
},
{
"from": 2,
"to": 3,
"count": 4
},
{
"from": 3,
"to": 4,
"count": 5
},
{
"from": 4,
"to": 5,
"count": 4
},
{
"from": 5,
"count": 0
}
]
}
},
{
"value": "Extended-Stay",
"count": 6,
"@search.facets": {
"Rating": [
{
"to": 1,
"count": 0
},
{
"from": 1,
"to": 2,
"count": 0
},
{
"from": 2,
"to": 3,
"count": 4
},
{
"from": 3,
"to": 4,
"count": 1
},
{
"from": 4,
"to": 5,
"count": 1
},
{
"from": 5,
"count": 0
}
]
}
}
]
},
"value": [ ALL 50 HOTELS APPEAR HERE ]
}
Faset toplama örneği (önizleme)
En son önizleme REST API veya Azure portalını kullanarak işlevleri birleştirebilirsiniz.
Facet toplamaları, facet değerlerinden ölçümleri hesaplamanıza olanak sağlar. Toplama özelliği, mevcut yüzey parçalama seçenekleriyle birlikte çalışır.
| Toplayıcı | Açıklama |
|---|---|
| Toplam | Alandaki toplam birikmiş değeri tüm belgeler arasında döndürür. Yalnızca sayısal türler için geçerlidir. Önceki önizleme sürümlerinde desteklenir. |
| Dk | Tüm belgelerdeki alandan en düşük değeri döndürür. Yalnızca sayısal türler için geçerlidir. |
| Max | Tüm belgelerdeki alandan en büyük değeri döndürür. Yalnızca sayısal türler için geçerlidir. |
| Avg | Tüm belgelerdeki alandan ortalama değeri döndürür. Yalnızca sayısal türler için geçerlidir. |
| Önem düzeyi |
HyperLogLog algoritmasını kullanarak tüm belgeler genelinde alandan farklı değerlerin yaklaşık sayısını döndürür. Facete edilebilir alanlar üzerinde, dize ve tarih saat alanları (bunlara karşılık gelen koleksiyon formları ile birlikte) dahil olmak üzere cardinality talep edebilirsiniz. |
Kardinalite toplama için duyarlık eşiklerini ayarlama
Kardinalite toplamada, doğruya yakın olması beklenen sayılarla daha az doğru olabilecek sayılar arasında bir belirtim olarak bir precisionThreshold seçenek ayarlayabilirsiniz. En yüksek değer 40.000'dir. Varsayılan değer 3.000'dir.
Evreleme bellekte gerçekleştirilir. Artan precisionThreshold bellek tüketimine neden olur ( precisionThreshold değer 8 bayt ile çarpılır).
Örnek: Toplam facet toplama
Sayısal veri türündeki tüm modellenebilir alanları (vektörler ve coğrafi koordinatlar hariç) toplayabilirsiniz.
Aşağıda hotels-sample dizinini kullanan bir örnek verilmiş. Rooms/SleepsCount alanı modellenebilir ve sayısal olduğundan, toplamı göstermek için bu alanı seçiyoruz. O alanı toplarsak, oteldeki toplam uyuyan kişi sayısını alırız. Modellerin ara alt belgeleri (Odalar) değil üst belgeyi (Oteller) saydığını unutmayın, bu nedenle yanıt otelin tamamı için tüm odaların SleepsCount değerlerini toplar. Bu sorguda, yalnızca bir otelin SleepsCount değerini toplamak için bir filtre ekleyeceğiz.
POST /indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
"search": "*",
"filter": "HotelId eq '41'",
"facets": [ "Rooms/SleepsCount, metric: sum"],
"select": "HotelId, HotelName, Rooms/Type, Rooms/SleepsCount",
"count": true
}
Sorgu yanıtı aşağıdaki örneğe benzer olabilir. Rüzgarlı Okyanus Modeli toplamda 40 konuk ağırlayabilir.
{
"@odata.count": 1,
"@search.facets": {
"Rooms/SleepsCount": [
{
"sum": 40.0
}
]
},
"value": [
{
"@search.score": 1.0,
"HotelId": "41",
"HotelName": "Windy Ocean Motel",
"Rooms": [
{
"Type": "Suite",
"SleepsCount": 4
},
{
"Type": "Deluxe Room",
"SleepsCount": 2
},
{
"Type": "Budget Room",
"SleepsCount": 2
},
{
"Type": "Budget Room",
"SleepsCount": 2
},
{
"Type": "Suite",
"SleepsCount": 2
},
{
"Type": "Standard Room",
"SleepsCount": 2
},
{
"Type": "Deluxe Room",
"SleepsCount": 2
},
{
"Type": "Suite",
"SleepsCount": 2
},
{
"Type": "Suite",
"SleepsCount": 4
},
{
"Type": "Standard Room",
"SleepsCount": 4
},
{
"Type": "Standard Room",
"SleepsCount": 2
},
{
"Type": "Deluxe Room",
"SleepsCount": 2
},
{
"Type": "Suite",
"SleepsCount": 2
},
{
"Type": "Standard Room",
"SleepsCount": 2
},
{
"Type": "Deluxe Room",
"SleepsCount": 2
},
{
"Type": "Deluxe Room",
"SleepsCount": 2
},
{
"Type": "Standard Room",
"SleepsCount": 2
}
]
}
]
}
Örnek: Tüm toplamaların bir kombinasyonu
Aşağıda, her toplama için söz dizimini gösteren varsayımsal bir 'facets' indeksinin kullanıldığı bir örnek verilmiştir. Kardinalitenin bu örnekte 40.000 olarak ayarlanmış ek precisionThreshold bir seçeneği (varsayılan değer 3.000'dir) olduğuna dikkat edin.
POST https://search-service.search.windows.net/indexes/facets/docs/search?api-version=2026-08-01-preview
Authorization: Bearer {{token}}
Content-Type: application/json
{
"search": "*",
"facets": [// field names are named <something>Value in this example
"cardinalityValue, metric: cardinality,precisionThreshold: 40000",
"sumValue,metric: sum",
"avgValue,metric: avg",
"minValue,metric: min",
"maxValue,metric: max"
]
}
Sorgu yanıtı aşağıdaki örneğe benzer olabilir.
{
"@search.facets": {
"cardinalityValue": [
{
"cardinality": 24000 // Number of distinct values in "cardinalityValue" field
}
],
"sumValue": [
{
"sum": 1200000 // Sum of all values in "sumValue" field
}
],
"avgValue": [
{
"avg": 50 // Average of all values in "avgValue" field
}
],
"minValue": [
{
"min": 1 // Minimum value in "minValue" field
}
],
"maxValue": [
{
"max": 100 // Maximum value in "maxValue" field
}
]
}
}
Örnek: Eksik değerlerin yerine kullanılacak varsayılan değeri belirtin
Tüm ölçümler, belge değer içermediğinde varsayılan bir değer belirtmeyi destekler.
Dize olmayan türler için (sayısal, tarih saat, boole), parametresini
defaultbelirli bir değere ayarlayın:"default: 42".Dize türleri için, parametresini
defaulttek kesme işareti sınırlayıcısı kullanılarak sınırlandırılmış bir dize olarak ayarlayın:"default: 'mystringhere'".
Bir belge bu alan için null içeriyorsa kullanılacak varsayılan değeri ekleyebilirsiniz: "facets": [ "Rooms/SleepsCount, metric: sum, default:2"]. Oda Rooms/SleepsCount alanı için null değere sahipse, varsayılan değer eksik değerin yerini alır.
Her alan türü için varsayılan belirtimi gösteren bir istek aşağıdadır.
POST https://search-service.search.windows.net/indexes/facets/docs/search?api-version=2026-08-01-preview
Authorization: Bearer {{token}}
Content-Type: application/json
{
"search": "*",
"facets": [// field names are named <datatype>Value in this example
"stringfield, metric: cardinality, default: 'my string goes here'",
"doubleField,metric: sum, default: 5.0",
"intField,metric: sum, default: 5",
"longField,metric: sum, default: 5"
]
}
Dize alanları için, varsayılan değer tek tırnak karakteri kullanılarak sınırlandırılır. Karakterden kaçmak için karakterin önüne ters eğik çizgi "'" ekleyin. Tüm karakterler dize sınırlayıcıları içinde geçerlidir. Sonlandırıcı karakter ters eğik çizgi olamaz.
Örnek: Aynı alanda birden çok ölçüm
Temel alınan veriler kullanım örneğini destekliyorsa, aynı alanda birden çok ölçüm belirtebilirsiniz.
POST https://search-service.search.windows.net/indexes/facets/docs/search?api-version=2026-08-01-preview
Authorization: Bearer {{token}}
Content-Type: application/json
{
"search": "*",
"facets": [
"fieldA, metric: cardinality, precisionThreshold: 40000",
"fieldA, metric: sum",
"fieldA, metric: avg",
"fieldA, metric: min",
"fieldA, metric: max"
]
}
Sorgu yanıtı aşağıdaki örneğe benzer olabilir.
{
"@search.facets": {
"fieldA": [
{
"cardinality": 24000 // Number of distinct values in "fieldA" field
},
{
"sum": 1200000 // Sum of all values in " fieldA " field
},
{
"avg": 5 // Avg of all values in " fieldA " field
},
{
"min": 0 // Min of all values in " fieldA " field
},
{
"max": 1200 // Max of all values in " fieldA " field
}
]
}
}
Sonraki adımlar
Araçlar ve API'ler için model gezinti yapılandırmasını yeniden ziyaret edin ve kodda modellerle çalışmaya yönelik en iyi yöntemleri gözden geçirin.
Örnek olarak, sunum katmanı için kod içeren fasetli gezinme özelliğini göstermesi açısından C#: Web uygulamalarına arama ekleyin öneririz. Örnek ayrıca filtreleri, önerileri ve otomatik tamamlama işlevini içerir. Sunu katmanı için JavaScript ve React kullanır.