Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.
Importante
Le funzionalità, le funzionalità o le proprietà contrassegnate (anteprima) non sono coperte da un contratto di servizio, non sono consigliate per i carichi di lavoro di produzione e potrebbero cambiare o essere vincolate prima che diventino disponibili a livello generale. Le condizioni di anteprima Azure AI Search si applicano a tutte le funzionalità di anteprima, indipendente o parte di una funzionalità disponibile a livello generale.
Questa sezione estende la configurazione della navigazione a faccette con esempi che illustrano l'utilizzo di base e altri scenari.
I campi facettabili sono definiti in un indice, ma i parametri e le espressioni facet vengono definiti nelle richieste di interrogazione. Se si dispone di un indice con campi facetable, è possibile provare le gerarchie facet (anteprima),le aggregazioni facet (anteprima) e i filtri facet (anteprima) sugli indici esistenti.
Parametri facet e sintassi
A seconda dell'API, una query facet è in genere una matrice di espressioni facet applicate ai risultati della ricerca. Ogni espressione facet contiene un nome di campo con facet, facoltativamente seguito da un elenco delimitato da virgole di coppie nome-valore.
- La query facet è una richiesta di query che include una proprietà facet.
- Il campo con facet è una definizione del campo nell'indice di ricerca che è attribuito alla proprietà
facetable. - count è il numero di corrispondenze per ogni faccetta trovata nei risultati della ricerca.
Nella tabella seguente vengono descritti i parametri facet usati negli esempi.
| Parametro facet | Descrizione | Utilizzo | Esempio |
|---|---|---|---|
count |
Numero massimo di termini di facette per struttura. | Intero. Il valore predefinito è 10. Non esiste alcun limite massimo, ma i valori più elevati degradano le prestazioni, soprattutto se il campo con faccette contiene un gran numero di termini univoci. Ciò è dovuto al modo in cui le query facet vengono distribuite nelle partizioni. È possibile impostare count su zero o su un valore maggiore o uguale al numero di valori univoci nel campo facetable per ottenere un conteggio accurato in tutte le partizioni. Il compromesso è un aumento della latenza. |
Tags,count:5 limita la risposta della navigazione con facet a 5 bucket di facet che contengono il maggior numero di facet, ma sono ordinati in qualsiasi ordine. |
sort |
Determina l'ordine dei bucket facet. | I valori validi sono count, -count, value, -value. Usare count per elencare i facet dal più grande al più piccolo. Usare -count per ordinare in ordine crescente (il più piccolo al massimo). Usare value per ordinare in modo alfanumerico in base al valore facet in ordine crescente. Usare -value per ordinare in ordine decrescente in base al valore. |
"facet=Category,count:3,sort:count" ottiene i primi tre bucket di facet nei risultati della ricerca, elencati in ordine decrescente in base al numero di corrispondenze in ogni categoria. Se le prime tre categorie sono Budget, Extended-Stay e Luxury e Budget ha 5 riscontri, Extended-Stay 6 e Luxury 4, i bucket facet vengono ordinati come Extended-Stay, Budget, Luxury. Un altro esempio è"facet=Rating,sort:-value". Produce facce per tutte le valutazioni possibili, in ordine decrescente in base al valore. Se le classificazioni sono da 1 a 5, i facet vengono ordinati 5, 4, 3, 2, 1, indipendentemente dal numero di documenti corrispondenti a ogni classificazione. |
values |
Fornisce valori per le etichette facet. | Impostare valori numerici delimitati da pipe o valori Edm.DateTimeOffset che specificano un set dinamico di valori di immissione di facet) I valori devono essere elencati in ordine sequenziale crescente per ottenere i risultati previsti. |
"facet=baseRate,values:10 | 20" genera tre bucket facet: uno per la tariffa di base da 0 a 10 escluso, uno da 10 a 20 escluso e uno per 20 e oltre. Una stringa "facet=lastRenovationDate,values:2024-02-01T00:00:00Z" produce due bucket di faccette: uno per gli hotel ristrutturati prima di febbraio 2024 e uno per gli hotel ristrutturati il 1° febbraio 2024 o successivamente. |
interval |
Fornisce una sequenza di intervalli per gli aspetti che possono essere raggruppati in intervalli. | Intervallo intero maggiore di zero per i numeri, o minuti, ora, giorno, settimana, mese, trimestre, anno per i valori di data e ora. |
"facet=baseRate,interval:100" genera bucket facet basati su intervalli di frequenza di base di dimensioni 100. Se le tariffe di base sono tutte comprese tra $60 e $600, ci sono bucket facet per 0-100, 100-200, 200-300, 300-400, 400-500 e 500-600. La stringa "facet=lastRenovationDate,interval:year" produce un bucket facet per ogni anno in cui un hotel è stato rinnovato. |
timeoffset |
Specifica l'offset dell'ora UTC da tenere in considerazione nell'impostazione dei limiti di tempo. | Impostare su ([+-]hh:mm, [+-]hhmm, or [+-]hh). Se usato, il timeoffset parametro deve essere combinato con l'opzione interval e solo se applicato a un campo di tipo Edm.DateTimeOffset. |
"facet=lastRenovationDate,interval:day,timeoffset:-01:00" usa il limite del giorno che inizia alle 01:00:00 UTC (mezzanotte nel fuso orario di destinazione). |
count e sort possono essere combinati nella stessa specifica del facet, ma non possono essere combinati con interval o values.
interval e values non possono essere combinati insieme.
I facet di intervallo per data e ora vengono calcolati in base all'ora UTC se timeoffset non è specificato. Ad esempio, per "facet=lastRenovationDate,interval:day", il limite del giorno inizia alle 00:00:00 UTC.
Esempio di facet di base
Le query facet seguenti funzionano sull'indice hotels-sample. È possibile usare la visualizzazione JSON in Esplora ricerche per incollare la query JSON. Per assistenza iniziale, vedere Aggiungere la navigazione con facet ai risultati della ricerca.
Questa prima query recupera le caratteristiche per Categorie, Classificazioni, Tag e stanze con valori baseRate in intervalli specifici. Si noti che l'ultimo facet si trova in un sottocampo dell'insieme Camere. I facet contano il documento padre (Hotel) e non i documenti secondari intermedi (Rooms), quindi la risposta determina il numero di hotel che dispongono di camere in ogni categoria di prezzi.
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
}
Questo secondo esempio utilizza un filtro per restringere il risultato della query con suddivisione in base a categorie precedente dopo che l'utente seleziona la valutazione 3 e la categoria "Motel".
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
}
Il terzo esempio imposta un limite superiore per i termini univoci restituiti in una query. Il valore predefinito è 10, ma è possibile aumentare o diminuire questo valore usando il parametro count sull'attributo facet. Questo esempio restituisce facette per città, limitate a 5.
POST /indexes/hotels-sample/docs/search?api-version={{api_version}}
{
"search": "view",
"facets": [ "Address/City,count:5" ],
"count": true
}
Questo esempio mostra tre facet per "Categoria", "Tag" e "Valutazione", con una sostituzione del conteggio su "Tag" e una sostituzione dell'intervallo per "Valutazione", che viene altrimenti memorizzata come doppio nell'indice.
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
}
Per ogni albero di navigazione basato su facet, esiste un limite predefinito delle prime 10 istanze di facet identificate dalla query. Questa impostazione predefinita ha senso per le strutture di spostamento perché mantiene l'elenco dei valori a una dimensione gestibile. È possibile eseguire l'override dell'impostazione predefinita assegnando un valore a "count". Ad esempio, "Tags,count:5" riduce il numero di tag nella sezione Tag ai primi cinque.
Solo per i valori Numeric e DateTime, è possibile impostare in modo esplicito i valori nel campo facet (ad esempio , facet=Rating,values:1|2|3|4|5) per separare i risultati in intervalli contigui (intervalli basati su valori numerici o periodi di tempo). In alternativa, è possibile aggiungere "interval", come in facet=Rating,interval:1.
Ogni intervallo viene costruito usando 0 come punto iniziale, un valore dall'elenco come punto finale, e quindi rimosso dal precedente intervallo per creare intervalli discreti.
Esempio di valori distinti
È possibile formulare una query che restituisce un conteggio di valori distinti per ogni campo di tabella visibile. In questo esempio viene formulata una query vuota o non qualificata ("search": "*") che corrisponde a tutti i documenti, ma impostando top su zero, si ottengono solo i conteggi, senza risultati.
Per brevità, questa query include solo due campi contrassegnati come facetable nell'indice hotels-sample.
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""
]
}
I risultati di questa query sono i seguenti:
{
"@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": []
}
Esempio di gerarchia di sfaccettature (anteprima)
Usando l'API REST latest preview o il portale di Azure, è possibile configurare una gerarchia di facet usando gli operatori > e ;.
| Operatore | Descrizione |
|---|---|
> |
L'operatore nesting (gerarchico) indica una relazione padre-figlio. |
; |
L'operatore punto e virgola indica più campi allo stesso livello di annidamento, che sono tutti elementi figlio dello stesso elemento padre. L'elemento padre deve contenere un solo campo. Entrambi i campi padre e figlio devono essere facetable. |
L'ordine delle operazioni in un'espressione facet che include gerarchie dei facet è:
- Operatore options (virgola
,) che separa i parametri facet per il campo facet, ad esempio la virgola inRooms/BaseRate,values - Parentesi, ad esempio quelle che racchiudono
(Rooms/BaseRate,values:50 ; Rooms/Type). - Operatore di annidamento (parentesi angolata
>) - Operatore append (punto e virgola
;), illustrato in un secondo esempio"Tags>(Rooms/BaseRate,values:50 ; Rooms/Type)"in questa sezione, in cui due facet figlio sono allo stesso livello nel elemento padre Tags.
Si noti che le parentesi vengono elaborate prima dell'annidamento e delle operazioni di accodamento: A > B ; C sarebbe diverso da A > (B ; C).
Esistono diversi esempi per le gerarchie di facet. Il primo esempio è una query che restituisce solo alcuni documenti, utile per visualizzare una risposta completa. I facet contano il documento padre (Hotels) e non i documenti secondari intermedi (Rooms), quindi la risposta determina il numero di hotel che dispongono di sale in ogni bucket facet.
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
}
I risultati di questa query sono i seguenti. Entrambi gli hotel hanno piscine. Per altri tag, un solo hotel offre il servizio.
{
"@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"
}
}
]
}
Questo secondo esempio estende quello precedente, dimostrando più facet di primo livello con più elementi figlio. Nota che l'operatore punto e virgola (;) separa ogni figlio.
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
}
Una risposta parziale, tagliata per brevità, mostra Tag con facet figlio per la tariffa base e il tipo delle camere. Nell'indice hotels-sample, entrambi gli hotel che corrispondono a +ocean hanno camere di ogni tipo e una piscina.
{
"@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
}
]
}}]},
...
}
Questo ultimo esempio mostra le regole di precedenza per le parentesi che influiscono sui livelli di annidamento. Supponiamo che si desideri restituire una gerarchia di facet in questo ordine.
Address/StateProvince
Address/City
Category
Rating
Per restituire questa gerarchia, creare una query in cui Categoria e Valutazione sono di pari livello in Indirizzo/Città.
{
"search": "beach",
"facets": [
"Address/StateProvince > (Address/City > (Category ; Rating))"
],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
Se si rimuovono le parentesi più interne, Category e Rating non sono più in relazione di fratellanza perché le regole di precedenza indicano che l'operatore > viene eseguito prima dell'operatore ;.
{
"search": "beach",
"facets": [
"Address/StateProvince > (Address/City > Category ; Rating)"
],
"select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
"count": true
}
L'elemento padre di primo livello è ancora Address/StateProvince, ma ora Address/City e Rating sono allo stesso livello.
Address/StateProvince
Rating
Address/City
Category
Esempio di filtro per sfaccettatura (anteprima)
Usando l'API REST latest preview o il portale di Azure, è possibile configurare i filtri facet.
Il filtro facet consente di vincolare i valori di facet restituiti a quelli corrispondenti a un'espressione regolare specificata. Due nuovi parametri accettano un'espressione regolare applicata al campo facet:
-
includeTermFilterfiltra i valori di facet per quelli che corrispondono all'espressione regolare -
excludeTermFilterfiltra i valori delle faccette per quelli che non corrispondono all'espressione regolare
Se una stringa di facet soddisfa entrambe le condizioni, ha la excludeTermFilter precedenza perché il set di stringhe di bucket viene prima valutato con includeTermFilter e quindi escluso con excludeTermFilter.
Vengono restituiti solo i valori facet che corrispondono all'espressione regolare. È possibile combinare questi parametri con altre opzioni per il faceting (ad esempio, count, sort e il faceting gerarchico) nei campi di tipo stringa.
Poiché l'espressione regolare è annidata all'interno di un valore stringa JSON, è necessario eseguire l'escape sia delle virgolette doppie (") sia della barra rovesciata (\). L'espressione regolare stessa è delimitata dalla barra obliqua (/). Per altre informazioni sui modelli di escape, vedere Ricerca di espressioni regolari.
Nell'esempio seguente viene illustrato come eseguire l'escape di caratteri speciali nell'espressione regolare, ad esempio barra rovesciata, virgolette doppie o caratteri di sintassi di espressioni regolari.
{
"search": "*",
"facets": ["name,includeTermFilter:/EscapeBackslash\\\OrDoubleQuote\\"OrRegexCharacter\\(/"]
}
Di seguito è riportato un esempio di filtro facet che corrisponde agli hotel Budget e Extended-Stay, con Valutazione come sottocategoria di ciascuna categoria di hotel.
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
}
L'esempio seguente è una risposta abbreviata (i documenti dell'hotel vengono omessi per brevità).
{
"@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 ]
}
Esempio di aggregazione per facet (anteprima)
Usando l'API REST latest preview o il portale di Azure, è possibile aggregare facet.
Le aggregazioni facet consentono di calcolare le metriche dai valori dei facet. La funzionalità di aggregazione funziona insieme alle opzioni di faccettatura esistenti.
| Aggregatore | Descrizione |
|---|---|
| Somma | Restituisce il valore totale accumulato dal campo in tutti i documenti. Si applica solo ai tipi numerici. Supportato nelle versioni di anteprima precedenti. |
| Min | Restituisce il valore minimo dal campo in tutti i documenti. Si applica solo ai tipi numerici. |
| Massimo | Restituisce il valore massimo dal campo in tutti i documenti. Si applica solo ai tipi numerici. |
| Media | Restituisce il valore medio dal campo in tutti i documenti. Si applica solo ai tipi numerici. |
| Cardinalità | Restituisce il conteggio approssimativo di valori distinti dal campo in tutti i documenti usando l'algoritmo HyperLogLog. È possibile richiedere cardinality su campi con facet, inclusi i campi stringa e data/ora (insieme ai relativi moduli di raccolta corrispondenti). |
Impostazione delle soglie di precisione per l'aggregazione della cardinalità
In un'aggregazione di cardinalità, è possibile impostare un'opzione precisionThreshold come differenza tra i conteggi che si prevede siano vicini a accurati e i conteggi che possono essere meno accurati. Il valore massimo è 40.000. Il valore predefinito è 3.000.
Il facet viene eseguito in memoria. L'aumento precisionThreshold comporta un maggiore consumo di memoria (il precisionThreshold valore moltiplicato per 8 byte).
Esempio: somma aggregazione facet
È possibile sommare qualsiasi campo facetable di un tipo di dati numerico ,ad eccezione dei vettori e delle coordinate geografiche.
Ecco un esempio che usa l'indice hotels-sample. Il campo Rooms/SleepsCount è facettabile e numerico, quindi scegliamo questo campo per dimostrare la somma. Se sommamo quel campo, otterremo il conteggio del sonno per l'intero hotel. Tenere presente che i facet conteggiano il documento padre (Hotel) e non i documenti secondari intermedi (Rooms), quindi la risposta somma il SleepsCount di tutte le camere per l'intero hotel. In questa query viene aggiunto un filtro per sommare SleepsCount per un solo hotel.
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
}
Una risposta alla query potrebbe somigliare al seguente esempio. Windy Ocean Model può ospitare un totale di 40 ospiti.
{
"@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
}
]
}
]
}
Esempio: composito di tutte le aggregazioni
Ecco un esempio che usa un indice ipotetico "facet" che mostra la sintassi per ogni aggregazione. Si noti che la cardinalità ha un'opzione aggiuntiva precisionThreshold (il valore predefinito è 3.000) impostata su 40.000 in questo esempio.
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"
]
}
Una risposta alla query potrebbe somigliare al seguente esempio.
{
"@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
}
]
}
}
Esempio: specificare un valore predefinito per sostituire i valori mancanti
Tutte le metriche supportano la specifica di un valore predefinito quando un documento non contiene un valore.
Per i tipi nonstring (numeric, datetime, boolean), impostare il
defaultparametro su un valore specifico:"default: 42".Per i tipi stringa, impostare il
defaultparametro su una stringa, delimitato usando il delimitatore apostrofo singolo:"default: 'mystringhere'".
È possibile aggiungere un valore predefinito da utilizzare se un documento contiene un valore Null per tale campo: "facets": [ "Rooms/SleepsCount, metric: sum, default:2"]. Se una stanza ha un valore Null per il campo Rooms/SleepsCount, l'impostazione predefinita sostituisce il valore mancante.
Ecco una richiesta che illustra la specifica predefinita per ogni tipo di campo.
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"
]
}
Per i campi stringa, un valore predefinito viene delimitato usando il carattere virgolette singole. Per eseguire l'escape del carattere, anteporre la barra rovesciata "'". Tutti i caratteri sono validi all'interno dei delimitatori di stringa. Il carattere di terminazione non può essere una barra rovesciata.
Esempio: più metriche nello stesso campo
Se i dati sottostanti supportano il caso d'uso, è possibile specificare più metriche nello stesso campo.
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"
]
}
Una risposta alla query potrebbe somigliare al seguente esempio.
{
"@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
}
]
}
}
Passaggi successivi
Rivedere la configurazione di spostamento facet per gli strumenti e le API ed esaminare le procedure consigliate per l'uso di facet nel codice.
Consigliamo il C#: Aggiungere la ricerca alle app Web per un esempio di navigazione a facette che include il codice per il livello di presentazione. L'esempio include anche filtri, suggerimenti e completamento automatico. Usa JavaScript e React per il livello di presentazione.