Indexek az Azure Cognitive Searchben

Az Azure Cognitive Searchben a keresési index a kereshető tartalom, amely elérhető a keresőmotor számára az indexeléshez, a teljes szöveges kereséshez és a szűrt lekérdezésekhez. Az indexet egy séma határozza meg, és a keresési szolgáltatásba menti, és az adatok importálása második lépésként történik. Ez a tartalom a keresési szolgáltatásban található az elsődleges adattárakon kívül, amely a modern alkalmazásokban várt ezredmásodpercnyi válaszidőhöz szükséges. Bizonyos indexelési forgatókönyvek kivételével a keresési szolgáltatás soha nem csatlakozik a helyi adatokhoz, és nem kérdezi le azokat.

Ha keresési indexet hoz létre és kezel, ez a cikk segít megérteni a következőket:

  • Tartalom (dokumentumok és séma)
  • Fizikai ábrázolás
  • Alapszintű műveletek

Inkább azonnal kéznél lenni? Lásd helyette a Keresési index létrehozása című témakört .

Keresési index tartalma

A Cognitive Searchben az indexek keresési dokumentumokat tartalmaznak. Elméletileg a dokumentumok a kereshető adatok egyetlen egysége az indexben. Előfordulhat például, hogy egy kereskedő minden termékhez rendelkezik dokumentumokkal, a hírügynökségek minden cikkhez rendelkeznek dokumentumokkal, egy utazási webhelyhez tartozhat egy dokumentum minden egyes szállodához és úti célhoz, és így tovább. Ezeket a fogalmakat ismerősebb adatbázis-megfelelőkhöz társítja: a keresési index megfelel egy táblának, a dokumentumok pedig nagyjából egyenértékűek a tábla soraival .

A dokumentum szerkezetét az indexséma határozza meg, az alább látható módon. A "mezők" gyűjtemény általában az index legnagyobb része, ahol minden mező neve el van nevezve, adattípushoz van rendelve, és engedélyezhető viselkedéssel rendelkezik, amelyek meghatározzák a használat módját.

{
  "name": "name_of_index, unique across the service",
  "fields": [
    {
      "name": "name_of_field",
      "type": "Edm.String | Collection(Edm.String) | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint",
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),
      "filterable": true (default) | false,
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),
      "key": true | false (default, only Edm.String fields can be keys),
      "retrievable": true (default) | false,
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported)
    }
  ],
  "suggesters": [ ],
  "scoringProfiles": [ ],
  "analyzers":(optional)[ ... ],
  "charFilters":(optional)[ ... ],
  "tokenizers":(optional)[ ... ],
  "tokenFilters":(optional)[ ... ],
  "defaultScoringProfile": (optional) "...",
  "corsOptions": (optional) { },
  "encryptionKey":(optional){ }
  }
}

A többi elem össze van csukva a rövidség kedvéért, de az alábbi hivatkozások biztosítják a részleteket:

Meződefiníciók

A keresési dokumentumokat az Index létrehozása kérelem törzsében található "mezők" gyűjtemény határozza meg. Szüksége lesz mezőkre a dokumentumazonosításhoz (kulcsokhoz), a kereshető szöveg tárolásához, valamint a támogató szűrők, aspektusok és rendezések mezőihez. Olyan adatokhoz is szükség lehet mezőkre, amelyeket a felhasználó soha nem lát. Előfordulhat például, hogy a keresési rangsor módosításához használható haszonkulcsok vagy marketingösztönzések mezőit szeretné használni.

Ha a bejövő adatok hierarchikus jellegűek, akkor az indexen belül összetett típusként jelölheti azokat, amelyek beágyazott struktúrákat jelölnek. A Hotelek nevű beépített mintaadatkészlet összetett típusokat szemléltet egy olyan cím (több almezőt tartalmaz) használatával, amely egy-az-egyhez kapcsolatban áll az egyes szállodákkal, valamint egy Összetett szobák gyűjtemény, amelyben minden szállodához több szoba van társítva.

Mezőattribútumok

A mezőtulajdonságok határozzák meg egy mező használati módját, például hogy használva lesz-e teljes szöveges keresésben, kategorizált navigációban, rendezési műveletekben stb.

A sztringmezőket gyakran "kereshetőként" és "lekérdezhetőként" jelölik meg. A keresési eredmények szűkítéséhez használt mezők a következők: "rendezhető", "szűrhető" és "facetable".

Attribútum Leírás
"kereshető" Kereshető – Teljes szöveges keresésre alkalmas, az indexelés során lexikai elemzés, például szavakra bontás végezhető rajta. Ha egy kereshető mező értékének például a „sunny day” szöveget adja meg, akkor az két különálló tokenre lesz bontva: „sunny” és „day”. További részletek az A teljes szöveges keresés működése című cikkben.
"szűrhető" Szűrhető – A $filter lekérdezések hivatkoznak rá. Az Edm.String vagy Collection(Edm.String) típusú szűrhető mezők nem lesznek szavakra bontva, ezért összehasonlítások csak pontos egyezésekre végezhetők. Ha egy ilyen mező értékének például a „sunny day” szöveget adja meg, akkor a $filter=f eq 'sunny' keresés nem talál egyezést, a $filter=f eq 'sunny day' viszont igen.
"rendezhető" Rendezhető – A rendszer alapértelmezés szerint érték szerint rendezi a találatokat, de a dokumentumok mezői alapján végzett rendezés is konfigurálható. A típusmezők Collection(Edm.String) nem lehetnek "rendezhetőek".
"facetable" Kategorizálható – Általában akkor használják, ha a keresési eredményeket a kategóriánkénti találatok számával együtt kell bemutatni (például szállodák egy adott városban). Ez a lehetőség az Edm.GeographyPoint típusú mezők esetén nem használható. A szűrhető, "rendezhető" vagy "facetable" típusú Edm.String mezők hossza legfeljebb 32 kilobájt lehet. Részletek az Index létrehozása (REST API) című cikkben.
"kulcs" Kulcs – Az indexen belüli dokumentumok egyedi azonosítója. Kulcsmezőként egyetlen Edm.String típusú mezőt kell megadni.
"lekért" Lekérdezhető – Megadja, hogy a mező visszaadható-e egy keresési eredményben. Ez akkor hasznos, ha egy mező (például nyereség) szűrésre, rendezésre vagy értékelésre szolgál, de a végfelhasználó számára nem kell megjelennie. Ennek a tulajdonságnak az értéke key tulajdonságú mezők esetén csak true lehet.

Új mezők bármikor megadhatók, a meglévő meződefiníciók azonban az index élettartamára rögzülnek. A fejlesztők ezért általában egyszerű indexek létrehozására vagy ötletek kipróbálására használják a portált, vagy a portál oldalain néznek utána egy beállításnak. Egy index rendszeres kiegészítése hatékonyabb az index újraépítését megkönnyítő kódalapú megközelítéssel.

Megjegyzés

Az index létrehozásához használt API-k eltérő alapértelmezett viselkedéssel rendelkeznek. A REST API-k esetében a legtöbb attribútum alapértelmezés szerint engedélyezve van (például a "kereshető" és a "lekérdezhető" igaz a sztringmezőkre), és gyakran csak akkor kell beállítania őket, ha ki szeretné őket kapcsolni. A .NET SDK esetében ennek az ellenkezője igaz. Minden olyan tulajdonság esetében, amelyet nem állít be explicit módon, az alapértelmezett beállítás a megfelelő keresési viselkedés letiltása, kivéve, ha kifejezetten engedélyezi azt.

Fizikai struktúra és méret

Az Azure Cognitive Searchben az index fizikai szerkezete nagyrészt belső megvalósítás. Hozzáférhet a sémához, lekérdezheti a tartalmát, monitorozhatja a méretét és kezelheti a kapacitást, de maguk a fürtök (indexek, szegmensek és egyéb fájlok és mappák) belső felügyeletét a Microsoft végzi.

Az index méretét az Azure Portal Indexek lapján, vagy a keresési szolgáltatásra vonatkozó GET INDEX kéréssel figyelheti. Szolgáltatásstatisztikai kérést is kiadhat, és ellenőrizheti a tárterület méretét.

Az index méretét a következő határozza meg:

  • A dokumentumok mennyisége és összetétele
  • Attribútumok az egyes mezőkön
  • Indexkonfiguráció (konkrétan a javaslattevők szerepeltetése)

A dokumentum összetételét és mennyiségét az importálni kívánt tartalom határozza meg. Ne feledje, hogy a keresési index csak kereshető tartalmat tartalmazhat. Ha a forrásadatok bináris mezőket tartalmaznak, hagyja ki ezeket a mezőket, kivéve, ha AI-bővítést használ a tartalom feltöréséhez és elemzéséhez, hogy kereshető szöveges információkat hozzon létre.

A mezőattribútumok határozzák meg a viselkedést. Ezen viselkedések támogatásához az indexelési folyamat létrehozza a szükséges adatstruktúrákat. A "kereshető" kifejezés például teljes szöveges keresést hív meg, amely fordított indexeket keres a tokenizált kifejezésben. Ezzel szemben a "szűrhető" vagy "rendezhető" attribútumok támogatják a módosítatlan sztringek iterációit. A következő szakaszban látható példa az index méretének a kiválasztott attribútumok alapján történő változásait mutatja be.

A javaslattevők olyan szerkezetek, amelyek támogatják a típusalapú vagy automatikus kiegészítésű lekérdezéseket. Így ha javaslatot tesz, az indexelési folyamat létrehozza a verbatim karakteres egyezésekhez szükséges adatstruktúrákat. A javaslattevők mezőszinten vannak implementálva, ezért csak azokat a mezőket válassza, amelyek megfelelőek a típusalapú előrehaladtához.

Az attribútumok és javaslattevők tárolási következményeit bemutató példa

Az alábbi képernyőképen az attribútumok különböző kombinációiból származó indextárolási minták láthatóak. Az index az ingatlan mintaindexén alapul, amelyet könnyen létrehozhat az Adatok importálása varázslóval és a beépített mintaadatokkal. Bár az indexsémák nem jelennek meg, az attribútumok az index neve alapján következtethetők ki. A realestate-searchable index esetében például a "kereshető" attribútum van kiválasztva, és semmi más, a realestate-retrieveable indexben a "retrieveable" attribútum van kiválasztva, semmi más, és így tovább.

Index size based on attribute selection

Bár ezek az indexvariánsok némileg mesterségesek, az attribútumok tárolóra gyakorolt hatásának széles körű összehasonlításáért hivatkozhatunk rájuk:

  • A "lekérdezhető" nincs hatással az index méretére.
  • A "szűrhető", "rendezhető", "facetable" több tárterületet használ fel.
  • A javaslattevő nagy eséllyel növelheti az index méretét, de nem annyira, mint a képernyőképen látható (az összes olyan mező ki lett választva, amely a javaslattevők számára is felismerhető, ami a legtöbb index esetében nem valószínű).

A fenti táblázatban sem tükröződik az elemzők hatása. Ha az edgeNgram tokenizert használja a karaktersorozatok (a, ab, abc, abcd) verbatim szekvenciáinak tárolására, az index mérete nagyobb lesz, mint ha standard elemzőt használ.

Alapműveletek és interakciók

Most, hogy már jobban tudja, mi az az index, ez a szakasz az index futásidejű műveleteit mutatja be, beleértve az egyetlen indexhez való csatlakozást és biztonságossá tételt.

Megjegyzés

Az indexek kezelésekor vegye figyelembe, hogy az indexek áthelyezéséhez vagy másolásához nem áll rendelkezésre portál- vagy API-támogatás. Ehelyett az ügyfelek általában egy másik keresési szolgáltatásra irányítják az alkalmazástelepítési megoldást (ha ugyanazt az indexnevet használják), vagy átdolgozzák a nevet, hogy másolatot készítsenek az aktuális keresési szolgáltatásról, majd létrehozzák.

Indexelkülönítés

A Cognitive Searchben egyszerre egy indexkel fog dolgozni, ahol minden indexhez kapcsolódó művelet egyetlen indexet céloz meg. Az indexeléshez és a lekérdezéshez nincs fogalma a kapcsolódó indexek és a független indexek összekapcsolásának.

Folyamatosan elérhető

Az indexek folyamatosan elérhetők, és nem lehet szüneteltetni vagy offline állapotba helyezni. Mivel folyamatos működésre lett tervezve, a tartalom frissítései vagy magát az indexet is valós időben frissítik. Emiatt előfordulhat, hogy a lekérdezések ideiglenesen hiányos eredményeket adnak vissza, ha egy kérés egybeesik egy dokumentumfrissítéssel.

Figyelje meg, hogy a lekérdezés folytonossága a dokumentumműveletekhez (frissítéshez vagy törléshez) és az aktuális index meglévő szerkezetét és integritását nem befolyásoló módosításokhoz (például új mezők hozzáadásához) áll fenn. Ha szerkezeti frissítéseket kell végeznie (módosítania kell a meglévő mezőket), ezeket általában egy leépítési és újraépítési munkafolyamattal kezelik egy fejlesztési környezetben, vagy az index új verziójának létrehozásával az éles szolgáltatásban.

Az indexek újraépítésének elkerülése érdekében egyes kisebb módosításokat végző ügyfelek úgy döntenek, hogy egy mezőt "verzióként" használnak, és létrehoznak egy újat, amely egy korábbi verzióval együtt létezik. Idővel ez elavult mezők vagy elavult egyéni elemződefiníciók formájában árva tartalmakhoz vezet, különösen egy éles indexben, amely költséges replikálás. Ezeket a problémákat az index tervezett frissítéseivel az index életciklus-felügyeletének részeként kezelheti.

Végpontkapcsolat és biztonság

Minden indexelési és lekérdezési kérelem egy indexet céloz meg. A végpontok általában a következők egyike:

Végpont Kapcsolat- és hozzáférés-vezérlés
<your-service>.search.windows.net/indexes Az indexgyűjteményt célozza meg. Index létrehozásakor, listázásakor vagy törlésekor használatos. Ezekhez a műveletekhez rendszergazdai jogosultságok szükségesek, amelyek rendszergazdai API-kulcsokon vagy keresési közreműködői szerepkörön keresztül érhetők el.
<your-service>.search.windows.net/indexes/<your-index>/docs Egyetlen index dokumentumgyűjteményét célozza meg. Index vagy adatfrissítés lekérdezésekor használatos. A lekérdezésekhez az olvasási jogosultságok elegendőek, és lekérdezési API-kulcsokon vagy adatolvasói szerepkörön keresztül érhetők el. Az adatfrissítéshez rendszergazdai jogosultságok szükségesek.

Következő lépések

Gyakorlati tapasztalatot szerezhet az indexek létrehozásában a Cognitive Search szinte minden mintájának vagy bemutatójának használatával. Első lépésként bármelyik rövid útmutatót kiválaszthatja a tartalomjegyzékből.

Érdemes azonban megismerkednie az adatokkal rendelkező indexek betöltésének módszertanával is. Az indexdefiníciók és az adatimportálási stratégiák a tandemben vannak meghatározva. Az alábbi cikkek további információt nyújtanak az indexek létrehozásáról és betöltéséről.