Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
A következőkre vonatkozik: Blobindexerek, Fájlindexelők (előzetes verzió)
Az Azure AI Keresés blobindexeléséhez ez a cikk bemutatja, hogyan állíthatja be a JSON-dokumentumokat tartalmazó blobok vagy fájlok tulajdonságait. Az Azure Blob Storage-ban vagy az Azure Filesban található JSON-fájlok általában az alábbi űrlapok bármelyikét feltételezik:
- Egyetlen JSON-dokumentum
- Jól formázott JSON-elemek tömböt tartalmazó JSON-dokumentum
- Több entitást tartalmazó JSON-dokumentum, új vonallal elválasztva
A blobindexelő egy paramétert parsingMode biztosít a keresési dokumentum kimenetének JSON-struktúra alapján történő optimalizálásához. Az elemzési módok a következő lehetőségekből állnak:
| elemzési mód | JSON-dokumentum | Description |
|---|---|---|
json |
Blobonként egy | (alapértelmezett) A JSON-blobokat egyetlen szövegtömbként elemzi. Minden JSON-blob egyetlen keresési dokumentum lesz. |
jsonArray |
Blobonként több | Elemez egy JSON-tömböt a blobban, ahol a tömb minden eleme külön keresési dokumentum lesz. |
jsonLines |
Blobonként több | Elemez egy blobot, amely több JSON-entitást (tömböt is) tartalmaz, és az egyes elemeket egy új vonal választja el egymástól. Az indexelő minden új sor után elindít egy új keresési dokumentumot. |
Az
Az indexelő definíción belül lehetőség van mezőleképezések beállítására, hogy a forrás JSON dokumentum mely tulajdonságait használja a cél keresési index feltöltéséhez. Az elemzési mód használatakor jsonArray például, ha a tömb alsó szintű tulajdonságként létezik, beállíthatja a "documentRoot" tulajdonságot, amely azt jelzi, hogy a tömb hol található a blobban.
Megjegyzés:
JSON-elemzési mód használata esetén az Azure AI Keresés feltételezi, hogy az összes blob ugyanazt az elemzőt használja (akár json, akár jsonArray, vagy jsonLines). Ha ugyanabban az adatforrásban különböző fájltípusokat használ, érdemes lehet fájlkiterjesztési szűrőkkel szabályozni, hogy mely fájlokat importálja.
Az alábbi szakaszok részletesebben ismertetik az egyes módokat. Ha nem ismeri az indexelő ügyfeleket és a fogalmakat, olvassa el a Keresési indexelő létrehozása című témakört. Ismernie kell az alapszintű blobindexelő konfiguráció részleteit is, amelyek itt nem ismétlődnek.
Egyetlen JSON-dokumentum indexelése (blobonként egy)
A blobindexelők alapértelmezés szerint egyetlen szövegtömbként elemzik a JSON-blobokat, egy keresési dokumentumot a tárolóban lévő blobokhoz. Ha a JSON strukturált, a keresési dokumentum tükrözheti ezt a struktúrát, és az egyes elemek egyéni mezőkként jelennek meg. Tegyük fel például, hogy a következő JSON-dokumentum van az Azure Blob Storage-ban:
{
"article" : {
"text" : "A hopefully useful article explaining how to parse JSON blobs",
"datePublished" : "2020-04-13",
"tags" : [ "search", "storage", "howto" ]
}
}
A blob indexelő egyetlen keresési dokumentummá elemzi a JSON dokumentumot, és betölt egy indexet, ahol a forrásban szereplő "text", "datePublished" és "tags" mezők azonos nevű és típusú célindexmezőkhöz vannak illesztve. A "text", "datePublished és "tags" mezőkkel rendelkező indexek alapján a blobindexelő a megfelelő leképezést tudja kikövetkeztetni anélkül, hogy egy mezőleképezés szerepel a kérelemben.
Bár az alapértelmezett működés szerint egy JSON-blob egy keresési dokumentumnak felel meg, az json elemzési mód beállítása megváltoztatja a tartalom belső mezőleképezéseit, és a content mezőket tényleges mezőkké alakítja a keresési indexben. Az json elemzési mód egy indexelődefiníciója az alábbihoz hasonló lehet:
POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "my-json-indexer",
"dataSourceName" : "my-blob-datasource",
"targetIndexName" : "my-target-index",
"parameters" : { "configuration" : { "parsingMode" : "json" } }
}
Megjegyzés:
Mint minden indexelő esetében, ha a mezők nem egyeznek egyértelműen, akkor kifejezetten meg kell adnia az egyes mezőleképezéseket, hacsak nem használja a blobtartalmakhoz és metaadatokhoz elérhető implicit mezőleképezéseket az alapszintű blobindexelő konfigurációjában leírtak szerint. Meglévő indexérték felülbírálásához a forrás JSON-nak nem null értéket kell megadnia. Ha a forrásdokumentum mezője null értékű, az indexelő megtartja a meglévő értéket. Egy mező explicit törléséhez adjon meg egy üres karakterláncot (""). Ez megakadályozza a nem szándékos törléseket az indexből.
json-példa (egyetlen szállodai JSON-fájl)
A GitHubon található JSON-dokumentumadatok a JSON-elemzés teszteléséhez hasznosak, ahol minden blob egy strukturált JSON-fájlt jelöl. Feltöltheti az adatfájlokat a Blob Storage-ba, és egy importálási varázslóval gyorsan kiértékelheti, hogy a tartalom hogyan lesz elemezve az egyes keresési dokumentumokban.
Az adatkészlet öt blobból áll, amelyek mindegyike tartalmaz egy címgyűjteményt és egy szobagyűjteményt tartalmazó szállodai dokumentumot. A blobindexelő mindkét gyűjteményt észleli, és tükrözi az indexsémában lévő bemeneti dokumentumok szerkezetét.
JSON-tömbök elemzése
Másik lehetőségként a JSON-tömböt is használhatja. Ez a beállítás akkor hasznos, ha a blobok jól formázott JSON-objektumokat tartalmazó tömböt tartalmaznak, és azt szeretné, hogy minden elem külön keresési dokumentum legyen.
jsonArrays használatával a következő JSON-blob három különálló dokumentumot hoz létre, mindegyik "id" és "text" mezőkkel.
[
{ "id" : "1", "text" : "example 1" },
{ "id" : "2", "text" : "example 2" },
{ "id" : "3", "text" : "example 3" }
]
Az parameters indexelő tulajdonsága elemzési mód értékeit tartalmazza. JSON-tömb esetén az indexelő definíciójának az alábbi példához hasonlóan kell kinéznie.
POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "my-json-indexer",
"dataSourceName" : "my-blob-datasource",
"targetIndexName" : "my-target-index",
"parameters" : { "configuration" : { "parsingMode" : "jsonArray" } }
}
jsonArrays példa
A GitHubon a New York Philharmonic JSON-adatkészlete hasznos a JSON-tömbelemzés teszteléséhez. Feltöltheti az adatfájlokat a Blob Storage-ba, és egy importálási varázslóval gyorsan kiértékelheti, hogy a tartalom hogyan lesz elemezve az egyes keresési dokumentumokban.
Az adatkészlet nyolc olyan blobból áll, amelyek mindegyike egy entitásokból álló JSON-tömböt tartalmaz, összesen 100 entitáshoz. Az entitások eltérőek attól függően, hogy mely mezők vannak feltöltve, de a végeredmény entitásonként egy keresési dokumentum, az összes tömbből, az összes blobból.
Beágyazott JSON-tömbök elemzése
Beágyazott elemekkel rendelkező JSON-tömbök esetén megadhat egy documentRoot többszintű struktúrát jelzőt. Ha például a blobok a következőképpen néznek ki:
{
"level1" : {
"level2" : [
{ "id" : "1", "text" : "Use the documentRoot property" },
{ "id" : "2", "text" : "to pluck the array you want to index" },
{ "id" : "3", "text" : "even if it's nested inside the document" }
]
}
}
Ezzel a konfigurációval indexelje a tulajdonságban található tömböt level2 :
{
"name" : "my-json-array-indexer",
... other indexer properties
"parameters" : { "configuration" : { "parsingMode" : "jsonArray", "documentRoot" : "/level1/level2" } }
}
JSON-entitások elemzése új vonalakkal elválasztva
Ha a blob több, új vonallal elválasztott JSON-entitást tartalmaz, és azt szeretné, hogy minden elem külön keresési dokumentum legyen, használja a következőt jsonLines:
{ "id" : "1", "text" : "example 1" }
{ "id" : "2", "text" : "example 2" }
{ "id" : "3", "text" : "example 3" }
JSON-sorok esetén az indexelő definíciójának az alábbi példához hasonlóan kell kinéznie.
POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "my-json-indexer",
"dataSourceName" : "my-blob-datasource",
"targetIndexName" : "my-target-index",
"parameters" : { "configuration" : { "parsingMode" : "jsonLines" } }
}
JSON-mezők leképezése keresési mezőkre
A mezőleképezések egy forrásmezőt társítanak egy célmezőhöz olyan helyzetekben, amikor a mezőnevek és a típusok nem azonosak. A mezőleképezések azonban a JSON-dokumentumok részeinek egyeztetésére és a keresési dokumentum legfelső szintű mezőibe való "felemelésére" is használhatók.
Az alábbi forgatókönyv ezt a példát ábrázolja. A mezőleképezésekkel kapcsolatos általános információkért lásd a mezőleképezéseket.
{
"article" : {
"text" : "A hopefully useful article explaining how to parse JSON blobs",
"datePublished" : "2016-04-13"
"tags" : [ "search", "storage", "howto" ]
}
}
Tegyük fel, hogy a keresési index a következő mezőkkel rendelkezik: text típus Edm.String, date típus Edm.DateTimeOffsetés tags típus Collection(Edm.String). Figyelje meg a "datePublished" közötti eltérést az index forrásában és date mezőjében. A JSON kívánt alakzatba való leképezéséhez használja a következő mezőleképezéseket:
"fieldMappings" : [
{ "sourceFieldName" : "/article/text", "targetFieldName" : "text" },
{ "sourceFieldName" : "/article/datePublished", "targetFieldName" : "date" },
{ "sourceFieldName" : "/article/tags", "targetFieldName" : "tags" }
]
A forrásmezők a JSON-mutató jelölésével vannak megadva. A JSON-dokumentum gyökerére mutató perjellel kezdje, majd válassza ki a kívánt tulajdonságot (tetszőleges beágyazási szinten) a perjellel elválasztott elérési út használatával.
Az egyes tömbelemekre nulla alapú index használatával is hivatkozhat. Ha például a fenti példából szeretné kiválasztani a "címkék" tömb első elemét, használjon egy ilyen mezőleképezést:
{ "sourceFieldName" : "/article/tags/0", "targetFieldName" : "firstTag" }
Megjegyzés:
Ha a "sourceFieldName" olyan tulajdonságra hivatkozik, amely nem létezik a JSON-blobban, a rendszer hiba nélkül kihagyja a leképezést. Ez a viselkedés lehetővé teszi az indexelés folytatását olyan JSON-blobok esetében, amelyek más sémával rendelkeznek (ez gyakori használati eset). Mivel nincs érvényesítési ellenőrzés, gondosan ellenőrizze a leképezéseket az elírások miatt, hogy ne veszítsen el dokumentumokat rossz okból.