Javaslatok (Azure AI Search REST API)
A Javaslatkérések olyan keresés mint ön típusú lekérdezések, amelyek egyező értékeket keresnek a javaslattevő által felismert mezőkben, és egyezést tartalmazó dokumentumokat ad vissza. Ha például engedélyezi a javaslatokat egy városmezőn , a "tenger" szöveg beírásával a "Seattle", a "Sea Tac" és a "Seaside" (az összes tényleges városnév) dokumentumot hoz létre az adott mezőhöz.
A válasz egy egyező dokumentum tartalma, valamint a dokumentumkulcs. Az automatikus kiegészítéssel ellentétben, amely egy másodlagos lekérdezésben használt befejezett kifejezést vagy kifejezést ad vissza, ez a kérés olyan információkat ad vissza, amelyek a tényleges dokumentumokra lesznek feloldva. Ha az egyező kifejezések vagy kifejezések azonosak a dokumentumokban, a rendszer megismétli az egyező tartalmat. Az eredmények szerkezetének javítása érdekében fontolja meg a $select
szűrő használatát további mezők visszaadására, amelyek nagyobb különbséget és környezetet biztosítanak.
A szolgáltatáskérésekhez HTTPS szükséges. A Javaslat kérés a GET vagy POST metódussal hozható létre.
GET https://[service name].search.windows.net/indexes/[index name]/docs/suggest?[query parameters]
Content-Type: application/json
api-key: [admin or query key]
POST https://[service name].search.windows.net/indexes/[index name]/docs/suggest?api-version=[api-version]
Content-Type: application/json
api-key: [admin or query key]
A Keresési dokumentumok kéréssel ellentétben előfordulhat, hogy a Javaslatok hívást a billentyűzet bemenetéhez köti, míg a Keresési hívás egy kattintáseseményhez van kötve.
A GET használatával történő meghívás esetén a kérelem URL-címe nem haladhatja meg a 8 KB-ot. Ez a hossz általában elegendő a legtöbb alkalmazáshoz. Egyes alkalmazások azonban nagyon nagy lekérdezéseket hoznak létre, különösen OData-szűrőkifejezések használatakor. Ezekben az alkalmazásokban a HTTP POST jobb választás, mert nagyobb szűrőket tesz lehetővé, mint a GET.
A POST esetében a szűrő záradékainak száma a korlátozó tényező, nem pedig a nyers szűrősztring mérete, mivel a POST kérelemméretkorlátja körülbelül 16 MB. Bár a POST-kérelem méretkorlátja nagyon nagy, a szűrőkifejezések nem lehetnek tetszőlegesen összetettek. A szűrés összetettségére vonatkozó korlátozásokkal kapcsolatos további információkért lásd: OData Expression Szintaxis az Azure AI Search szolgáltatáshoz.
URI-paraméterek
Paraméter | Leírás |
---|---|
[szolgáltatás neve] | Kötelező. Állítsa be ezt a keresési szolgáltatás egyedi, felhasználó által megadott nevére. |
[index neve]/dokumentumok | Kötelező. Egy elnevezett index dokumentumgyűjteményét adja meg. |
api-verzió | Kötelező. A jelenlegi stabil verzió a következő api-version=2020-06-30 : . További verziókért lásd: API-verziók . Lekérdezések esetén az API-verzió mindig URI-paraméterként van megadva a GET és a POST esetében is. |
URL-kódolási javaslatok
Ne felejtse el URL-kódolással megadni a lekérdezési paramétereket a GET REST API közvetlen meghívásakor. A Javaslatok műveletekhez a következők tartoznak:
- keresés
- $filter
- highlightPreTag
- highlightPostTag
Az URL-kódolás csak az egyes paraméterekhez ajánlott. Ha véletlenül URL-kódolással kódolja a teljes lekérdezési sztringet (minden a után), a ?
kérések megszakadnak.
Emellett az URL-kódolás csak akkor szükséges, ha a REST API-t közvetlenül a GET használatával hívja meg. Nem szükséges URL-kódolás a Javaslatok POST használatával történő meghívásakor, vagy ha az Azure AI Search .NET ügyfélkódtára kezeli az URL-kódolást.
Kérelemfejlécek
Az alábbi táblázat a szükséges és nem kötelező kérelemfejléceket ismerteti.
Mezők | Description |
---|---|
Content-Type | Kötelező. Állítsa ezt a következőre: application/json |
api-key | Nem kötelező , ha Azure-szerepköröket használ, és egy tulajdonosi jogkivonatot ad meg a kéréshez, ellenkező esetben kulcsra van szükség. Az API-kulcs egy egyedi, rendszer által létrehozott sztring, amely hitelesíti a keresési szolgáltatásnak küldött kérést. A dokumentumgyűjtemény lekérdezési kérelmei megadhatnak egy rendszergazdai kulcsot vagy egy lekérdezéskulcsot API-kulcsként. A lekérdezéskulcs a dokumentumgyűjteményen végzett írásvédett műveletekhez használatos. A részletekért lásd: Csatlakozás az Azure AI Searchhöz kulcshitelesítés használatával . |
Kérelem törzse
GET esetén: Nincs.
POST esetén:
{
"filter": "odata_filter_expression",
"fuzzy": true | false (default),
"highlightPreTag": "pre_tag",
"highlightPostTag": "post_tag",
"minimumCoverage": # (% of index that must be covered to declare query successful; default 80),
"orderby": "orderby_expression",
"search": "partial_search_input",
"searchFields": "field_name_1, field_name_2, ...",
"select": "field_name_1, field_name_2, ...",
"suggesterName": "suggester_name",
"top": # (default 5)
}
Lekérdezési paraméterek
A lekérdezések több paramétert is elfogadnak az URL-címben, ha a GET-et meghívják, és JSON-tulajdonságokként a kérelem törzsében, amikor POST használatával hívják meg őket. Egyes paraméterek szintaxisa kissé eltér a GET és a POST függvény között. Ezeket a különbségeket alább találja.
Név | Típus | Description |
---|---|---|
api-verzió | sztring | Kötelező. A kéréshez használt REST API verziója. A támogatott verziók listáját az API-verziók című témakörben találja. Ehhez a művelethez az API-verzió lekérdezési paraméterként van megadva az URL-címben, függetlenül attól, hogy GET vagy POST használatával hívja-e meg az API-t. |
$filter | sztring | Választható. Egy kifejezés, amely szűri a javaslatokat tartalmazó dokumentumokat. Szűrőben csak szűrhető mezők használhatók. Az Automatikus kiegészítés API nem támogatja a "search.ismatch" és a "search.ismatchscoring*" szűrőkifejezéseket. Ha POST használatával hívja meg, ezt a paramétert a rendszer szűrőnek nevezi el a $filter helyett. Az Azure AI Search által támogatott OData-kifejezéshelyességi szintaxissal kapcsolatos részletekért tekintse meg az Azure AI Search OData-kifejezésszintaxisát ismertető cikket. |
Fuzzy | boolean | Választható. Az alapértelmezett érték a hamis. Ha igaz értékre van állítva, ez az API akkor is talál javaslatokat, ha egy helyettesítő vagy hiányzó karakter szerepel a keresési szövegben. A szerkesztési távolság lekérdezési sztringenként 1. Ha a lekérdezési sztring több kifejezésből áll, a teljes sztringben csak egy hiányzó, extra, helyettesítő vagy transzponált karakter szerepelhet. Az intelligens egyezés engedélyezése bizonyos esetekben jobb élmény lehet, hiszen teljesítményköltséggel jár, mivel a homályos javaslatok keresése lassabb, és több erőforrást használ fel. |
highlightPostTag | sztring | Választható. Alapértelmezés szerint egy üres sztring. A kiemelt kifejezéshez hozzáfűző sztringcímke. A highlightPreTag paraméterrel kell beállítani. Az URL-címben lévő fenntartott karaktereknek százalékban kódoltnak kell lenniük (például a #helyett %23). GET használatával történő meghívás esetén az URL-címben lévő fenntartott karaktereknek százalékkódoltnak kell lenniük (például a #helyett %23). |
highlightPreTag | sztring | Választható. Alapértelmezés szerint egy üres sztring. Egy sztringcímke, amely a kiemelt kifejezésre van előzve. A highlightPostTag értéket kell megadni. Get használatával történő meghívás esetén az URL-címben lévő fenntartott karaktereknek százalékban kódoltnak kell lenniük (például a #helyett %23). |
$orderby | sztring | Választható. Vesszővel tagolt kifejezések listája az eredmények szerint történő rendezéshez. Minden kifejezés lehet mezőnév vagy a függvény hívása geo.distance() . Minden kifejezést követhet az "asc" (növekvő) vagy a "desc" (csökkenő). Az alapértelmezett érték a növekvő sorrend. A $orderby legfeljebb 32 záradékot tartalmaz. Ha POST-tal hívjuk meg, ez a paraméter a $orderby helyett sorrendben van elnevezve. |
minimumCoverage | egész szám | Választható. Alapértelmezés szerint 80. Egy 0 és 100 közötti szám, amely azt jelzi, hogy az index hány százaléka legyen elérhető a lekérdezés kiszolgálásához ahhoz, hogy sikeresként lehessen jelenteni.
Az alapértelmezett érték a teljes lefedettséghez képest a sebesség és a hatékonyság torzítása. A lefedettség csökkentése korlátozza a lekérdezések bővítését, így az eredmények gyorsabban térnek vissza. Azt is lehetővé teszi, hogy a lekérdezés részleges index-rendelkezésre állás esetén is sikeres legyen, még akkor is, ha egy szegmens lassan válaszol vagy nem érhető el szolgáltatásállapot-problémák vagy indexkarbantartás miatt. A minimumCoverage értékétől függetlenül az index százalékos arányának elérhetőnek kell lennie, vagy a Javaslatok a HTTP 503-at tartalmazó állapotkódot adja vissza. Ha a javaslatok sikeresek a minimálisCoverage szinten, akkor HTTP 200 értéket ad vissza, és a válaszban szerepel egy @search.coverage érték, amely a lekérdezés karbantartásakor rendelkezésre álló index százalékos arányát jelzi. Az érték csökkentése 503 hiba esetén hasznos lehet. Ellenkező esetben érdemes lehet növelni az értéket, ha a válasz nem ad megfelelő egyezést. |
keresés | sztring | Kötelező. A lekérdezések javaslatához használandó keresési szöveg. Legalább 1 karakternek és legfeljebb 100 karakternek kell lennie. Nem tartalmazhat operátorokat, lekérdezési szintaxist vagy idézett kifejezéseket. |
searchFields | sztring | Választható. A vesszővel elválasztott mezőnevek listája a megadott keresési szöveg kereséséhez. A célmezőknek szerepelnie kell az index Javaslattevők definíciójában. |
$select | sztring | Választható. A lekérendő vesszővel elválasztott mezők listája. Ha nincs meghatározva, a rendszer csak a dokumentumkulcsot és a javaslat szövegét adja vissza. Az összes mezőt explicit módon kérheti le, ha ezt a paramétert a értékre állítja * . Ha POST használatával hív, a paraméter neve select (kiválasztás) lesz a $select helyett. |
suggesterName | sztring | Kötelező. A javaslattevő neve az indexdefiníció részét képező Javaslattevők gyűjteményben megadottak szerint. A javaslattevő meghatározza, hogy mely mezőket vizsgálja a rendszer a javasolt lekérdezési kifejezésekhez. |
$top | egész szám | Választható. Alapértelmezett érték: 5). A lekérendő automatikus kiegészítési javaslatok száma. Az értéknek 1 és 100 közötti számnak kell lennie. A POST használatával történő híváskor ez a paraméter a $top helyett a felső névvel lesz elnevezve. |
Reagálás
Állapotkód: A rendszer az "200 OK" értéket adja vissza a sikeres válaszhoz.
{
"@search.coverage": # (if minimumCoverage was provided in the query),
"value": [
{
"@search.text": "...",
"<key field>": "..."
},
...
]
}
Ha a leképezési beállítással kéri le a mezőket, a tömb minden eleme tartalmazza őket:
{
"value": [
{
"@search.text": "...",
"<key field>": "..."
<other projected data fields>
},
...
]
}
Példák
5 javaslat lekérése, ahol a részleges keresési bemenet "lux":
GET /indexes/hotels/docs/suggest?search=lux&$top=5&suggesterName=sg&api-version=2020-06-30
POST /indexes/hotels/docs/suggest?api-version=2020-06-30
{
"search": "lux",
"top": 5,
"suggesterName": "sg"
}
Figyelje meg, hogy a suggesterName megadása kötelező a Javaslatok műveletben.