Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
Azure AI Zoeken is beschikbaar via de Azure-portal, REST API's en Azure-SDK's. Het vormt ook een basis voor Foundry IQ, de beheerde kennislaag die bedrijfsinhoud transformeert in herbruikbare, machtigingsbewuste knowledge bases voor agents in de Microsoft Foundry-portal.
Important
Functies, mogelijkheden of eigenschappen die zijn gemarkeerd (preview) vallen niet onder een service level agreement, worden niet aanbevolen voor productieworkloads en kunnen worden gewijzigd of beperkt voordat ze algemeen beschikbaar worden. De Azure AI Zoeken preview-voorwaarden zijn van toepassing op alle preview-functionaliteit, ongeacht of deze zelfstandig is of deel uitmaakt van een algemeen beschikbare functie.
In deze sectie wordt de facetnavigatieconfiguratie uitgebreid met voorbeelden die basisgebruik en andere scenario's demonstreren.
Facetable-velden worden gedefinieerd in een index, maar facetparameters en expressies worden gedefinieerd in queryaanvragen. Als u een index met facetable-velden hebt, kunt u facethiërarchieën (preview), facetaggregaties (preview) en facetfilters (preview) voor bestaande indexen proberen.
Parameters voor facetten en syntaxis
Afhankelijk van de API is een facetquery meestal een matrix van facetexpressies die worden toegepast op zoekresultaten. Elke facetexpressie bevat een facetveldnaam, optioneel gevolgd door een door komma's gescheiden lijst met naam-waardeparen.
- facetquery is een queryaanvraag die een faceteigenschap bevat.
-
facetable field is een velddefinitie in de zoekindex die is toegeschreven aan de
facetableeigenschap. - aantal is het aantal overeenkomsten voor elk facet dat in de zoekresultaten wordt gevonden.
In de volgende tabel worden facetparameters beschreven die in de voorbeelden worden gebruikt.
| Facetparameter | Beschrijving | Gebruik | Voorbeeld |
|---|---|---|---|
count |
Maximum aantal facettermen per structuur. | Geheel getal. De standaardwaarde is 10. Er is geen bovengrens, maar hogere waarden verminderen de prestaties, vooral als het facetveld een groot aantal unieke termen bevat. Dit komt doordat facetqueries worden verdeeld over shards. U kunt instellen count op nul of op een waarde die groter is dan of gelijk is aan het aantal unieke waarden in het facetable-veld om een nauwkeurig aantal te krijgen voor alle shards. De afweging is een hogere latentie. |
Tags,count:5 beperkt het facetnavigatieantwoord tot vijf facetbuckets met de meeste facetwaarden, maar ze kunnen in willekeurige volgorde staan. |
sort |
Bepaalt de volgorde van facetbucktten. | Geldige waarden zijn count, -count, value, . -value Gebruik count deze functie om facetten weer te geven van de grootste naar de kleinste. Gebruik -count deze indeling om in oplopende volgorde (kleinste naar grootste) te sorteren. Hiermee value kunt u alfanumerisch sorteren op facetwaarde in oplopende volgorde. Gebruik -value dit om aflopend te sorteren op waarde. |
"facet=Category,count:3,sort:count" haalt de top drie facet buckets op in zoekresultaten, weergegeven in aflopende volgorde op het aantal overeenkomsten in elke Categorie. Als de drie belangrijkste categorieën Budget, Extended-Stay en Luxe zijn en Budget 5 treffers heeft, heeft Extended-Stay 6 en Luxe heeft 4, dan worden de facet buckets besteld als Extended-Stay, Budget, Luxe. Een ander voorbeeld is"facet=Rating,sort:-value". Het produceert facetten voor alle mogelijke classificaties, in aflopende volgorde op waarde. Als classificaties tussen 1 en 5 liggen, worden de facetten gerangschikt op 5, 4, 3, 2, 1, ongeacht het aantal documenten dat overeenkomt met elke classificatie. |
values |
Biedt waarden voor facetlabels. | Ingesteld op door sluistekens gescheiden numerieke waarden of Edm.DateTimeOffset waarden die een dynamische set facetinvoerwaarden opgeven. De waarden moeten in opeenvolgende volgorde worden weergegeven, oplopend om de verwachte resultaten te verkrijgen. |
"facet=baseRate,values:10 | 20" produceert drie facet buckets: één voor basistarief 0 tot maar niet 10, één voor 10 tot maar niet inclusief 20, en één voor 20 en hoger. Een tekenreeks "facet=lastRenovationDate,values:2024-02-01T00:00:00Z" produceert twee facet buckets: één voor hotels gerenoveerd vóór februari 2024 en één voor hotels gerenoveerd op 1 februari 2024 of hoger. |
interval |
Biedt een intervalreeks voor facetten die in intervallen kunnen worden gegroepeerd. | Een geheel getalinterval dat groter is dan nul voor getallen of minuten, uur, dag, week, maand, kwartaal, jaar voor datum/tijd-waarden. |
"facet=baseRate,interval:100" genereert facet buckets op basis van basisfrequentiebereiken van grootte 100. Als basistarieven allemaal tussen $60 en $600 liggen, zijn er facetcategorieën voor 0-100, 100-200, 200-300, 300-400, 400-500 en 500-600. De tekenreeks "facet=lastRenovationDate,interval:year" produceert één facet bucket voor elk jaar dat een hotel is gerenoveerd. |
timeoffset |
Hiermee geeft u de UTC-tijdverschil op waarmee rekening moet worden gehouden bij het instellen van tijdsgrenzen. | Ingesteld op ([+-]hh:mm, [+-]hhmm, or [+-]hh). Indien gebruikt, moet de timeoffset parameter worden gecombineerd met de intervaloptie en alleen wanneer deze wordt toegepast op een veld van het type Edm.DateTimeOffset. |
"facet=lastRenovationDate,interval:day,timeoffset:-01:00" gebruikt de daggrens die begint om 01:00:00 UTC (middernacht in de doeltijdzone). |
count en sort kan worden gecombineerd in dezelfde facetspecificatie, maar ze kunnen niet worden gecombineerd met interval of values.
interval en values kan niet samen worden gecombineerd.
Intervalfacetten op datum en tijd worden berekend op basis van UTC indien timeoffset niet is opgegeven. Bijvoorbeeld voor "facet=lastRenovationDate,interval:day" begint de daggrens om 00:00:00 UTC.
Eenvoudig facetvoorbeeld
De volgende facetquery's werken met de voorbeeldindex hotels. U kunt de JSON-weergave in Search Explorer gebruiken om de JSON-query te plakken. Zie Facetnavigatie toevoegen aan zoekresultaten voor hulp bij het aan de slag gaan.
Met deze eerste query worden facetten opgehaald voor categorieën, classificaties, tags en ruimten met baseRate-waarden in specifieke bereiken. U ziet dat het laatste facet zich bevindt op een subveld van de collectie Ruimten. Facetten tellen het bovenliggende document (Hotels) en niet tussenliggende subdocumenten (Kamers), dus het antwoord bepaalt het aantal hotels met kamers in elke prijscategorie.
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
}
In dit tweede voorbeeld wordt een filter gebruikt om het vorige facetqueryresultaat te verfijnen nadat de gebruiker Beoordeling 3 en categorie Motel heeft geselecteerd.
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
}
In het derde voorbeeld wordt een bovengrens ingesteld voor unieke termen die in een query worden geretourneerd. De standaardwaarde is 10, maar u kunt deze waarde verhogen of verlagen met behulp van de tellingsparameter voor het facetkenmerk. In dit voorbeeld worden facetten voor de stad geretourneerd, beperkt tot 5.
POST /indexes/hotels-sample/docs/search?api-version={{api_version}}
{
"search": "view",
"facets": [ "Address/City,count:5" ],
"count": true
}
In dit voorbeeld ziet u drie facetten voor 'Categorie', 'Tags' en 'Waardering', met een overriding van het aantal op 'Tags' en een bereikoverriding voor 'Waardering', die anders als een double wordt opgeslagen in de index.
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
}
Voor elke facetnavigatiestructuur is er een standaardlimiet van de top 10 facetexemplaren die door de query worden gevonden. Deze standaardinstelling is logisch voor navigatiestructuren, omdat de lijst met waarden wordt opgeslagen in een beheersbare grootte. U kunt de standaardwaarde overschrijven door een waarde toe te wijzen aan 'count'. Bijvoorbeeld, "Tags,count:5" vermindert het aantal tags onder de sectie Tags tot de top vijf.
Voor alleen numerieke en Datum/tijd-waarden kunt u expliciet waarden instellen in het facetveld (bijvoorbeeld facet=Rating,values:1|2|3|4|5) om resultaten te scheiden in aaneengesloten bereiken (bereiken op basis van numerieke waarden of tijdsperioden). U kunt ook 'interval' toevoegen, zoals in facet=Rating,interval:1.
Elk bereik wordt gebouwd met behulp van 0 als uitgangspunt, een waarde uit de lijst als eindpunt en vervolgens ingekort van het vorige bereik om discrete intervallen te maken.
Voorbeeld van afzonderlijke waarden
U kunt een query formuleren die een uniek aantal waarden retourneert voor elk facetable-veld. In dit voorbeeld wordt een lege of niet-gekwalificeerde query ("search": "*") geformuleerd die overeenkomt met alle documenten, maar door in te stellen top op nul, krijgt u alleen de aantallen, zonder resultaten.
Voor de eenvoud bevat deze query slechts twee velden die als facetable zijn gemarkeerd in de hotels-sample index.
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""
]
}
De resultaten van deze query zijn als volgt:
{
"@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": []
}
Voorbeeld van een facethiërarchie (previewversie)
Met behulp van de latest preview REST API of de Azure-portal kunt u een facethiërarchie configureren met behulp van de operators > en ;.
| Operator | Beschrijving |
|---|---|
> |
De operator nesten (hiërarchisch) geeft een bovenliggende-onderliggende relatie aan. |
; |
De puntkomma-operator geeft meerdere velden op hetzelfde nestniveau aan, die allemaal kinderen van dezelfde ouder zijn. Het bovenliggende element mag slechts één veld bevatten. Zowel de ouder- als de kindvelden moeten facetable zijn. |
De volgorde van bewerkingen in een facetexpressie die facethiërarchieën bevat, zijn:
- De optie-operator (komma
,) die facetparameters voor het facetveld scheiden, zoals de komma inRooms/BaseRate,values. - De haakjes, zoals degene die
(Rooms/BaseRate,values:50 ; Rooms/Type)insluiten. - De nestingoperator (hoekig haakje
>) - De operator voor samenvoegen (puntkomma
;), gedemonstreerd in een tweede voorbeeld"Tags>(Rooms/BaseRate,values:50 ; Rooms/Type)"in deze sectie, waar twee onderliggende facetten peers zijn onder de Tags-bovenliggende structuur.
U ziet dat haakjes worden verwerkt voordat u bewerkingen nestt en toevoegt: A > B ; C anders is dan A > (B ; C).
Er zijn verschillende voorbeelden voor facethiërarchieën. Het eerste voorbeeld is een query die slechts een paar documenten retourneert, wat handig is voor het weergeven van een volledig antwoord. Facets tellen het bovenliggende document (Hotels) en niet de tussenliggende subdocumenten (Kamers), waardoor het antwoord bepaalt hoeveel hotels kamers hebben in elke facetbucket.
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
}
De resultaten van deze query zijn als volgt. Beide hotels hebben zwembaden. Voor andere tags biedt slechts één hotel de voorzieningen.
{
"@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"
}
}
]
}
In dit tweede voorbeeld wordt het vorige voorbeeld uitgebreid, waarbij meerdere toplevel-facetten met meerdere subelementen worden gedemonstreerd. Let op de puntkomma-operator (;) scheidt elk kind-element.
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
}
Een gedeeltelijke reactie, ingekort voor kortheid, toont tags met onderliggende facetten voor de basissnelheid en het type van de ruimten. In de hotels-sample index, hebben beide hotels die overeenkomen met +ocean kamers van elk type en een zwembad.
{
"@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
}
]
}}]},
...
}
In dit laatste voorbeeld ziet u prioriteitsregels voor haakjes die van invloed zijn op nestniveaus. Stel dat u een facethiërarchie in deze volgorde wilt retourneren.
Address/StateProvince
Address/City
Category
Rating
Als u deze hiërarchie wilt retourneren, maakt u een query waarbij categorie en classificatie op hetzelfde niveau staan onder Adres/Plaats.
{
"search": "beach",
"facets": [
"Address/StateProvince > (Address/City > (Category ; Rating))"
],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
Als u de binnenste haakjes verwijdert, zijn categorie en classificatie niet langer broers en zussen, omdat de prioriteitsregels betekenen dat de > operator eerder ;wordt geëvalueerd.
{
"search": "beach",
"facets": [
"Address/StateProvince > (Address/City > Category ; Rating)"
],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
De bovenliggende entiteit op het hoogste niveau is nog steeds Address/StateProvince, maar nu zijn Address/Stad en beoordeling op hetzelfde niveau.
Address/StateProvince
Rating
Address/City
Category
Voorbeeld van filteren op facetten (preview-versie)
Met behulp van de latest preview REST API of de Azure-portal kunt u facetfilters configureren.
Met facetfiltering kunt u de facetwaarden beperken die worden geretourneerd aan de waarden die overeenkomen met een opgegeven reguliere expressie. Twee nieuwe parameters accepteren een reguliere expressie die wordt toegepast op het facetveld:
-
includeTermFilterfiltert de facetwaarden op de waarden die overeenkomen met de reguliere expressie -
excludeTermFilterhiermee worden de facetwaarden gefilterd op de waarden die niet overeenkomen met de reguliere expressie
Als een facettekenreeks aan beide voorwaarden voldoet, heeft de excludeTermFilter prioriteit omdat de set buckettekenreeksen eerst wordt geëvalueerd met includeTermFilter en vervolgens wordt uitgesloten met excludeTermFilter.
Alleen de facetwaarden die overeenkomen met de reguliere expressie worden geretourneerd. U kunt deze parameters combineren met andere facetopties (bijvoorbeeld count, sorten hiërarchische facetten) voor tekenreeksvelden.
Omdat de reguliere expressie is genest binnen een JSON-tekenreekswaarde, moet u zowel de dubbele aanhalingstekens (") als de backslashtekens (\) escapen. De reguliere expressie zelf wordt afgebakend door de schuine streep (/). Zie Reguliere expressiezoekopdrachten voor meer informatie over escape-patronen.
In het volgende voorbeeld ziet u hoe u speciale tekens in uw reguliere expressie kunt ontsnappen, zoals backslash, dubbele aanhalingstekens of reguliere expressiesyntaxtekens.
{
"search": "*",
"facets": ["name,includeTermFilter:/EscapeBackslash\\\OrDoubleQuote\\"OrRegexCharacter\\(/"]
}
Hier is een voorbeeld van een facetfilter dat overeenkomt met Budget- en Extended-Stay-hotels, waarbij Waardering als onderliggende categorie van elke hotelcategorie fungeert.
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
}
Het volgende voorbeeld is een verkort antwoord (hoteldocumenten worden weggelaten voor beknoptheid).
{
"@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 ]
}
Voorbeeld van facetaggregatie (preview)
Met behulp van de latest preview REST API of de Azure-portal kunt u facetten aggregeren.
Met Facetaggregaties kunt u metrische gegevens berekenen op basis van facetwaarden. De aggregatiemogelijkheid werkt naast de bestaande facetopties.
| Verzamelaar | Beschrijving |
|---|---|
| Som | Retourneert de totale samengevoegde waarde uit het veld in alle documenten. Alleen van toepassing op numerieke typen. Ondersteund in eerdere preview-versies. |
| Min | Retourneert de minimumwaarde van het veld in alle documenten. Alleen van toepassing op numerieke typen. |
| Max | Retourneert de maximumwaarde van het veld in alle documenten. Alleen van toepassing op numerieke typen. |
| Avg | Retourneert de gemiddelde waarde uit het veld in alle documenten. Alleen van toepassing op numerieke typen. |
| Kardinaliteit | Retourneert het geschatte aantal afzonderlijke waarden uit het veld in alle documenten met behulp van het HyperLogLog-algoritme. U kunt cardinality aanvragen voor facetable-velden, inclusief string- en datumtijdvelden (samen met hun bijbehorende verzamelvormen). |
Precisiedrempels instellen voor kardinaliteitsaggregatie
In een kardinaliteitsaggregatie kunt u een precisionThreshold optie instellen als een afbakening tussen aantallen die naar verwachting dicht bij nauwkeurig zijn en aantallen die minder nauwkeurig kunnen zijn. De maximumwaarde is 40.000. De standaardwaarde is 3000.
Faceting wordt uitgevoerd in het geheugen. De toename van precisionThreshold resulteert in meer geheugenverbruik (de precisionThreshold waarde maal 8 bytes).
Voorbeeld: Facetaggregatie met som
U kunt elk facetable veld van een numeriek gegevenstype optellen (behalve vectoren en geografische coördinaten).
Hier volgt een voorbeeld met behulp van de voorbeeldindex hotels. Het veld Rooms/SleepsCount is doorzoekbaar en numeriek, daarom kiezen we dit veld om de som aan te tonen. Als we dat veld optellen, krijgen we het aantal slaapstanden voor het hele hotel. Zoals u weet, tellen facetten het bovenliggende document (Hotels) en niet tussenliggende subdocumenten (Kamers), dus het antwoord telt de SleepsCount van alle kamers voor het hele hotel op. In deze query voegen we een filter toe om de SleepsCount voor slechts één hotel op te tellen.
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
}
Een antwoord voor de query kan eruitzien als in het volgende voorbeeld. Windy Ocean Model is geschikt voor in totaal 40 gasten.
{
"@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
}
]
}
]
}
Voorbeeld: Een samengestelde verzameling van alle aggregaties
Hier volgt een voorbeeld met behulp van een hypothetische facetindex die de syntaxis voor elke aggregatie weergeeft. U ziet dat kardinaliteit een extra precisionThreshold optie heeft (standaard is 3.000) ingesteld op 40.000 in dit voorbeeld.
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"
]
}
Een antwoord voor de query kan eruitzien als in het volgende voorbeeld.
{
"@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
}
]
}
}
Voorbeeld: Geef een standaardwaarde op die moet worden vervangen door ontbrekende waarden
Alle metrische gegevens ondersteunen het opgeven van een standaardwaarde wanneer een document geen waarde bevat.
Voor niet-tekenreekstypen (numeriek, datum/tijd, booleaanse waarde) stelt u de
defaultparameter in op een specifieke waarde:"default: 42".Voor tekenreekstypen stelt u de
defaultparameter in op een tekenreeks, gescheiden met behulp van het enkele apostrofscheidingsteken:"default: 'mystringhere'".
U kunt een standaardwaarde toevoegen die moet worden gebruikt als een document een null voor dat veld bevat: "facets": [ "Rooms/SleepsCount, metric: sum, default:2"] Als een ruimte een null-waarde heeft voor het veld Rooms/SleepsCount, wordt de standaardwaarde vervangen door de ontbrekende waarde.
Hier volgt een aanvraag die de standaardspecificatie voor elk veldtype illustreert.
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"
]
}
Voor tekenreeksvelden wordt een standaardwaarde begrensd door het enkele aanhalingsteken. Om het teken te escapen, plaatst u er een backslash '\\' voor. Alle tekens zijn geldig binnen de aanhalingstekens. Het afsluitteken kan geen backslash zijn.
Voorbeeld: Meerdere metrische gegevens in hetzelfde veld
Als de onderliggende gegevens ondersteuning bieden voor de use-case, kunt u meerdere metrische gegevens voor hetzelfde veld opgeven.
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"
]
}
Een antwoord voor de query kan eruitzien als in het volgende voorbeeld.
{
"@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
}
]
}
}
Volgende stappen
Ga opnieuw naar de facetnavigatieconfiguratie voor hulpprogramma's en API's en bekijk de aanbevolen procedures voor het werken met facetten in code.
Wij raden u aan C#: het toevoegen van een zoekfunctie aan web-apps als een voorbeeld van facetnavigatie met de bijbehorende code voor de presentatielaag. Het voorbeeld bevat ook filters, suggesties en automatisch aanvullen. Het maakt gebruik van JavaScript en React voor de presentatielaag.