Facettás navigációs példák

Megjegyzés

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Important

Az (előzetes verzióban) megjelölt funkciókra, képességekre vagy tulajdonságokra nem vonatkozik szolgáltatási szintű szerződés, nem ajánlott éles számítási feladatokhoz, és az általános elérhetővé válásuk előtt változhatnak vagy korlátozhatók. Az Azure AI Keresés előzetes verziójú kifejezések az összes előzetes verziós funkcióra vonatkoznak, függetlenül attól, hogy önálló vagy egy általánosan elérhető funkció része.

Ez a szakasz az alapszintű használatot és más forgatókönyveket bemutató példákkal bővíti a célzott navigációs konfigurációt .

A facetable mezők indexben vannak definiálva, de a facet paraméterek és kifejezések a lekérdezési kérelmekben vannak definiálva. Ha facetable mezőkkel rendelkező indexe van, kipróbálhatja a facet hierarchiákat (előzetes verzió) és a facet aggregációkat (előzetes verzió) és az aspektusszűrőket (előzetes verzió) a meglévő indexeken.

Aspektusparaméterek és szintaxis

Az API-tól függően az aspektusos lekérdezések általában a keresési eredményekre alkalmazott aspektuskifejezések tömbjei. Minden aspektuskifejezés tartalmaz egy facetable mezőnevet, amelyet igény szerint a név-érték párok vesszővel tagolt listája követ.

  • A facet query egy olyan lekérdezési kérelem, amely tartalmaz egy aspektustulajdonságot.
  • A facetable mező a keresési indexben egy olyan meződefiníció, amelyhez a facetable tulajdonság van társítva.
  • A darabszám a keresési eredményekben található minden egyes aspektushoz tartozó egyezések száma.

Az alábbi táblázat a példákban használt aspektusparamétereket ismerteti.

Aspektusparaméter Leírás Használat Példa
count Az aspektuskifejezések maximális száma struktúránként. Egész szám. Az alapértelmezett érték 10. Nincs felső korlát, de a magasabb értékek rontják a teljesítményt, különösen akkor, ha a kijelölő mező számos egyedi kifejezést tartalmaz. Ennek az az oka, hogy a rendszer hogyan osztja el az aspektusos lekérdezéseket a szegmensek között. Beállíthatja a count értékét nullára vagy olyan számra, amely nagyobb vagy egyenlő a facetable mező egyedi értékszámával, hogy minden töredéken pontos számlálást kapjon. A kompromisszum nagyobb késést jelent. Tags,count:5 a faceted navigációs választ 5 olyan gyűjtőre korlátozza, amely a legtöbb aspektust tartalmazza, de ezek bármilyen sorrendben lehetnek.
sort Meghatározza a facsét rekeszek sorrendjét. Az érvényes értékek a következőkcount: , -count, value-value. A count legnagyszerűbbtől a legkisebbig sorolhat fel aspektusokat. A -count rendezés növekvő sorrendben (a legkisebbtől a legnagyobbig) használható. Használja a value-t az alfanumerikus rendezéshez a facet érték alapján növekvő sorrendben. A csökkenő érték szerinti rendezéshez használható -value . "facet=Category,count:3,sort:count" a keresési eredményekben a találatok száma szerinti csökkenő sorrendben listázott három legnagyobb tulajdonságcsoportot kapja meg az egyes kategóriákban. Ha az első három kategória a Budget, az Extended-Stay és a Luxury, és a Budget 5 találatot, az Extended-Stay 6-ot, a Luxus pedig 4-et kapott, akkor a kiemelt gyűjtők sorrendje: Extended-Stay, Budget, Luxus. Egy másik példa az."facet=Rating,sort:-value" Az összes lehetséges értékeléshez érték szerint csökkenő sorrendben állít elő aspektusokat. Ha a minősítések 1 és 5 között vannak, a rendszer 5, 4, 3, 2, 1 szempontot rendel, függetlenül attól, hogy hány dokumentum felel meg az egyes minősítéseknek.
values Értékeket biztosít az arculati címkékhez. Pipával tagolt numerikus értékre vagy Edm.DateTimeOffset értékre van állítva, amely dinamikus adatbeviteli értékeket határoz meg. Az értékeknek sorrendben, növekvő sorrendben kell szerepelnie a várt eredmények lekéréséhez. "facet=baseRate,values:10 | 20" három profil vödröt állít elő: egyet az alapküszöb 0-tól, de nem tartalmazva a 10-et, egyet a 10-től, de nem tartalmazva a 20-at, és egyet a 20-tól felfelé. A sztring "facet=lastRenovationDate,values:2024-02-01T00:00:00Z" két kategóriát hoz létre: egyet a 2024 februárja előtt felújított szállodák számára, és egyet a 2024. február 1-jén vagy később felújított szállodák számára.
interval Intervallumütemezést biztosít az intervallumokba csoportosítható aspektusokhoz. Számok esetében nulla értéknél nagyobb egész intervallum, vagy dátum időértékek esetén perc, óra, nap, hét, hónap, negyedév, év. "facet=baseRate,interval:100" 100-as alapkamattartományok alapján állít elő facettagyűjtőket. Ha az alapárak mind 60 és 600 dollár között vannak, a 0-100, 100-200, 200-300, 300-400, 400-500 és 500-600 szemantaralom tartományok vannak. A "facet=lastRenovationDate,interval:year" karakterlánc minden olyan évre létrehoz egy szegmens-bokszot, amikor egy szállodát felújítottak.
timeoffset Az időhatárok beállításához figyelembe venni kívánt UTC időeltolódást adja meg. Állítsa be a ([+-]hh:mm, [+-]hhmm, or [+-]hh) értéket. Ha ezt használja, a paramétert timeoffset össze kell kapcsolni az intervallum beállítással, és csak akkor, ha egy típusmezőre Edm.DateTimeOffsetalkalmazza. "facet=lastRenovationDate,interval:day,timeoffset:-01:00" a 01:00:00 (UTC) időpontban (a cél időzónában éjfélkor) kezdődő naphatárt használja.

count és sort kombinálható ugyanazon fázzenspecifikációban, de nem kombinálhatók a interval vagy values-vel.

interval és values nem kombinálható.

A dátumidő intervallum-aspektusait a rendszer az UTC idő alapján számítja ki, ha timeoffset nincs megadva. A naphatár például "facet=lastRenovationDate,interval:day"00:00:00 (UTC) időpontban kezdődik.

Alapszintű példa

Az alábbi aspektusos lekérdezések a szállodai mintaindexen működnek. A JSON-nézetet a Search Explorerben használhatja a JSON-lekérdezésbe való beillesztéshez. Az első lépésekről további információt a Részletes navigáció hozzáadása a keresési eredményekhez című témakörben talál.

Ez az első lekérdezés lekéri a kategóriák, minősítések, címkék és szobák aspektusait, amelyek adott tartományokban lévő baseRate értékeket tartalmaznak. Figyelje meg, hogy az utolsó elem a Szobák gyűjtemény egy részmezőjén található. Az aspektusok a szülődokumentumot (Szállodák) és nem a köztes aldokumentumokat (Szobák) számolják, így a válasz határozza meg, hogy hány szálloda rendelkezik szobákkal az egyes díjszabási kategóriákban.

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 
}  

Ez a második példa egy szűrővel szűkíti le az előző arculati lekérdezés eredményét, miután a felhasználó a 3. minősítést és a "Motel" kategóriát választja.

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  
} 

A harmadik példa egy lekérdezésben visszaadott egyedi kifejezések felső korlátját állítja be. Az alapértelmezett érték 10, de ezt az értéket az aspektusattribútum count paraméterével növelheti vagy csökkentheti. Ez a példa a város 5-höz korlátozott aspektusait adja vissza.

POST /indexes/hotels-sample/docs/search?api-version={{api_version}}
{  
  "search": "view",  
  "facets": [ "Address/City,count:5" ],
  "count": true
} 

Ez a példa a "Kategória", a "Címkék" és az "Értékelés" három nézetét mutatja be, a 'Címkék' esetében a darabszám felülírásával és az 'Értékelés' esetében a tartomány felülírásával, amely egyébként lebegőpontos számként van tárolva az indexben.

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
}

Minden egyes facettált navigációs fa esetében alapértelmezett korlát van a lekérdezés által talált 10 leggyakoribb facettpéldányra. Ez az alapértelmezett beállítás a navigációs struktúrák esetében hasznos, mert az értéklistát kezelhető méretűre állítja. Felülbírálhatja az alapértelmezett értéket, ha egy értéket rendel hozzá a "számhoz". A Címkék szakasz alatti címkék számát például "Tags,count:5" az első ötre csökkenti.

Csak numerikus és DateTime értékek esetén explicit módon állíthat be értékeket az aspektusmezőben (például facet=Rating,values:1|2|3|4|5) az eredmények egybefüggő tartományokra való elválasztásához (numerikus értékeken vagy időszakokon alapuló tartományokban). Másik lehetőségként hozzáadhatja az "intervallumot" is, ahogy a következőben is látható facet=Rating,interval:1.

Minden tartomány 0-val kezdődik, a listából származó értékkel zárul, és az előző tartomány eltávolítása után különálló intervallumok jönnek létre.

Példa különböző értékekre

Létrehozhat egy olyan lekérdezést, amely az egyes facetable mezők eltérő értékszámát adja vissza. Ez a példa egy üres vagy nem minősített lekérdezést ("search": "*") fogalmaz meg, amely megfelel az összes dokumentumnak, de ha nullára állítja top be, csak a számokat kapja, eredmény nélkül.

Rövidség kedvéért ez a lekérdezés csak két mezőt tartalmaz, amelyeket facetable-tel jelöltek a szállodai mintaindexben.

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""
    ]
}

A lekérdezés eredményei a következők:

{
  "@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": []
}

Példa a facet hierarchia használatára (előzetes verzió)

A latest preview REST API vagy a Azure portál használatával a > és ; operátorok használatával konfigurálhat egy aspektushierarchiát.

Üzemeltető Leírás
> A beágyazott (hierarchikus) operátor egy szülő–gyermek kapcsolatot jelöl.
; A pontosvessző operátor több mezőt jelöl ugyanazon a beágyazási szinten, amelyek mind ugyanannak a szülőnek a gyermekei. A szülőnek csak egy mezőt kell tartalmaznia. A szülő- és gyermekmezőknek is meg kell lenniük facetable.

A facet-hierarchiákat tartalmazó aspektuskifejezések műveleteinek sorrendje a következő:

  • Az opciós operátor (vessző ,), amely elválasztja a facet mező paramétereit, például a vessző a Rooms/BaseRate,values
  • A zárójelek, például az olyanok, amelyek körülveszik a (Rooms/BaseRate,values:50 ; Rooms/Type)-t.
  • A beágyazási operátor (hegyes zárójel >)
  • A fejezet egy második példájában bemutatott hozzáfűző operátor (pontosvessző ;), ahol a két gyermekaspektus társ a Címkék szülőelem alatt.

Figyelje meg, hogy a zárójelek feldolgozása a beágyazás és a hozzáfűzés előtt történik: A > B ; C más lenne, mint A > (B ; C).

Több példa is van a fáccett hierarchiákra. Az első példa egy lekérdezés, amely csak néhány dokumentumot ad vissza, ami hasznos a teljes válasz megtekintéséhez. A aspektusok megszámolják a szülődokumentumot (Szállodák) és nem a köztes részdokumentumokat (Szobák), így a válasz határozza meg, hogy hány szálloda rendelkezik szobákkal az egyes aspektusgyűjtőkben.

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 
}

A lekérdezés eredményei a következők. Mindkét szállodában vannak medencék. Más címkék esetén csak egy szálloda biztosítja a kényelmet.

{
  "@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"
      }
    }
  ]
}

Ez a második példa kiterjeszti az előzőt, amely több felső szintű aspektust mutat be több gyermekkel. Figyelje meg, hogy a pontosvessző (;) operátor elválasztja az egyes gyermekeket.

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 
}  

A rövidség kedvéért levágott részleges válasz a szobák alapkamatára és típusára vonatkozó gyermek aspektusú címkéket jelenít meg. A szállodákat tartalmazó mintaindexben mindkét olyan szálloda, amely +ocean megfelel, minden típusú szobával és medencével rendelkezik.

{
  "@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
            }
          ]
        }}]},
  ...
}

Ez az utolsó példa a beágyazási szinteket befolyásoló zárójelek elsőbbségi szabályait mutatja be. Tegyük fel, hogy ebben a sorrendben szeretne visszaadni egy aspektushierarchiát.

Address/StateProvince
  Address/City
    Category
    Rating

Ha vissza szeretné adni ezt a hierarchiát, hozzon létre egy lekérdezést, amelyben a Kategória és az Értékelés a Cím/Város csoportban található testvérek.

  { 
    "search": "beach",  
    "facets": [
        "Address/StateProvince > (Address/City > (Category ; Rating))"
        ],
    "select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
    "count": true 
  }

Ha eltávolítja a legbelső zárójeleket, a kategória és az értékelés már nem testvérek, mert az elsőbbséget élvező szabályok azt jelentik, hogy az > operátort a rendszer korábban ;kiértékeli.

  { 
    "search": "beach",  
    "facets": [
        "Address/StateProvince > (Address/City > Category ; Rating)"
        ],
    "select": "HotelName, Description, Tags, Address/StateProvince, Address/City",
    "count": true 
  }

A legfelső szintű szülő továbbra is az Address/StateProvince, de az Address/City és a Rating ugyanazon a szinten található.

Address/StateProvince
  Rating
  Address/City
    Category

Aspektusszűrési példa (előzetes verzió)

A latest preview REST API vagy a Azure portál használatával konfigurálhat aspektusszűrőket.

Az aspektusszűrés lehetővé teszi a megadott reguláris kifejezésnek megfelelőknek visszaadott aspektusértékek korlátozását. Két új paraméter fogad el egy reguláris kifejezést, amely az aspektusmezőre van alkalmazva:

  • includeTermFilter a törzsértékeket a normál kifejezésnek megfelelő értékekre szűri
  • excludeTermFilter a törzsértékeket azokra szűri, amelyek nem felelnek meg a normál kifejezésnek

Ha egy aspektussztring mindkét feltételnek megfelel, az excludeTermFilter elsőbbséget élvez, mivel a gyűjtősztringek halmazát először a rendszer kiértékeli includeTermFilter , majd kizárja a következővel excludeTermFilter: .

A rendszer csak azokat a aspektusértékeket adja vissza, amelyek megfelelnek a reguláris kifejezésnek. Ezeket a paramétereket a karakterlánc mezők más aspektusbeállításaival (például count, sort és hierarchikus aspektusokkal) kombinálhatja.

Mivel a reguláris kifejezés egy JSON-sztringértékbe van ágyazva, a kettős idézőjel (") és a fordított perjel (\) karaktereket meg kell szökni. Magát a reguláris kifejezést a perjel (/) elválasztja. A feloldómintákról további információt a Reguláris kifejezéskeresés című témakörben talál.

Az alábbi példa bemutatja, hogyan kerülheti el a normál kifejezés speciális karaktereit, például fordított perjeleket, dupla idézőjeleket vagy reguláris kifejezésszintaxis karaktereket.

{
    "search": "*", 
    "facets": ["name,includeTermFilter:/EscapeBackslash\\\OrDoubleQuote\\"OrRegexCharacter\\(/"] 
}

Íme egy példa egy olyan faktorszűrőre, amely megfelel a Budget és Extended-Stay hotelek esetén, és az értékelés minden szállodakategória alá tartozik.

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 
} 

Az alábbi példa egy rövidített válasz (a szállodai dokumentumok nem szerepelnek a rövidítésben).

{
  "@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 ]
}

Fazettaaggregációs példa (előzetes verzió)

A latest preview REST API vagy a Azure portál használatával összesítheti a aspektusokat.

A facet aggregációk lehetővé teszik metrikák kiszámítását az aspektusértékekből. Az aggregációs képesség a meglévő facettázási lehetőségek mellett működik.

Aggregátor Leírás
Összeg Az összes dokumentum mezőjének összesített halmozott értékét adja vissza. Csak numerikus típusokra vonatkozik. A korábbi előzetes verziókban támogatott.
Min Az összes dokumentum mezőjének minimális értékét adja vissza. Csak numerikus típusokra vonatkozik.
Max Az összes dokumentum mezőjének maximális értékét adja vissza. Csak numerikus típusokra vonatkozik.
Avg Az összes dokumentum mezőinek átlagértékét adja vissza. Csak numerikus típusokra vonatkozik.
Számossága A HyperLogLog-algoritmus használatával visszaadja a mezőkből az összes dokumentum között található eltérő értékek hozzávetőleges számát. A facetable mezőkre, beleértve a karakterlánc és dátum-idő mezőket (valamint a hozzájuk tartozó gyűjteményűrlapokat) is, kérheti cardinality.

Pontossági küszöbértékek beállítása számosság-összesítéshez

A számosság-összesítésnél beállíthat egy precisionThreshold opciót, hogy elhatárolást képezzen a várhatóan pontosabb számok és a kevésbé pontos számok között. A maximális érték 40 000. Az alapértelmezett érték 3000.

Az arcfelismerés a memóriában történik. precisionThreshold növelése több memóriafogyasztást eredményez (az precisionThreshold értéket megszorozva 8 bájttal).

Példa: Szempont szerinti összesítés

Egy numerikus adattípus bármely facetable mezőjét összegzheti (a vektorok és a földrajzi koordináták kivételével).

Íme egy példa a hotels-sample index használatával. A Rooms/SleepsCount mező facetable és numerikus, ezért ezt a mezőt választjuk az összeg szemléltetéséhez. Ha összeadjuk ezt a mezőt, megkapjuk az alvás számát az egész szállodában. Ne feledjük, hogy az aspektusok a fődokumentumot (Szállodák) számolják meg, és nem a közbenső aldokumentumokat (Szobák), így a válasz az egész szálloda összes szobájának SleepsCount értékét összegzi. Ebben a lekérdezésben egy szűrőt adunk hozzá a SleepsCount összegzéséhez egyetlen szállodához.

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
}

A lekérdezésre adott válasz az alábbi példához hasonló lehet. A Windy Ocean Model összesen 40 vendéget tud fogadni.

{
  "@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
        }
      ]
    }
  ]
}

Példa: Az összes aggregáció összetettsége

Íme egy példa egy hipotetikus "facets" index használatával, amely az egyes összesítések szintaxisát jeleníti meg. Figyelje meg, hogy a számosság egy további precisionThreshold beállítással rendelkezik (az alapértelmezett érték 3000) a jelen példában 40 000 értékre van állítva.

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" 
    ] 
}

A lekérdezésre adott válasz az alábbi példához hasonló lehet.

{ 
    "@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 
            } 
        ] 
    } 
}

Példa: A hiányzó értékek helyettesítésére szolgáló alapértelmezett érték megadása

Minden metrika támogatja az alapértelmezett érték megadását, ha egy dokumentum nem tartalmaz értéket.

  • Nem sztringtípusok (numerikus, datetime, logikai) esetén állítsa a default paramétert egy adott értékre: "default: 42" .

  • Sztringtípusok esetén állítsa a default paramétert egy sztringre, amely az egyetlen aposztróf elválasztóval van elválasztva: "default: 'mystringhere'".

Ha egy dokumentum null értéket tartalmaz az adott mezőhöz, felvehet egy alapértelmezett értéket: "facets": [ "Rooms/SleepsCount, metric: sum, default:2"]. Ha egy helyiség null értékkel rendelkezik a Szobák/SleepsCount mezőhöz, az alapértelmezett érték a hiányzó értéket helyettesíti.

Az alábbi kérés bemutatja az egyes mezőtípusok alapértelmezett specifikációját.

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" 
    ] 
} 

Sztringmezők esetén az alapértelmezett érték az egyetlen idézőjel karakterrel van elválasztva. A karaktert úgy lehet "escape-elni", hogy előtte "fordított perjelet" használunk. A sztringhatárolókban minden karakter érvényes. A megszüntető karakter nem lehet fordított perjel.

Példa: Több metrika ugyanazon a mezőn

Ha a mögöttes adatok támogatják a használati esetet, több metrikát is megadhat ugyanazon a mezőben.

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" 
    ] 
}

A lekérdezésre adott válasz az alábbi példához hasonló lehet.

{ 
    "@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 
            } 
        ] 
    } 
}

Következő lépések

Tekintse át az eszközök és API-k aspektusalapú navigációs konfigurációját , és tekintse át az ajánlott eljárásokat a kód aspektusainak használatához.

Javasoljuk a C#: Keresés hozzáadása webalkalmazásokhoz a bemutató réteg kódját tartalmazó, részletes navigáció példájához. A minta szűrőket, javaslatokat és automatikus kiegészítést is tartalmaz. JavaScriptet és Reactet használ a bemutató réteghez.