Index létrehozása vagy frissítése (ELŐZETES REST API)

A következőre vonatkozik: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Fontos

2023-07-01-Preview vektorkeresést ad hozzá.

  • "vectorSearch" objektum, a vektorkeresési beállítások konfigurációja. Csak a vektorkeresési algoritmusokra vonatkozik.
  • "Collection(Edm.Single)" adattípus, amely egy vektormezőhöz szükséges. Egypontos lebegőpontos számot jelöl primitív típusként.
  • "dimensions" tulajdonság, amely egy vektormezőhöz szükséges. A vektorbeágyazások dimenzióját jelöli.
  • "vectorSearchConfiguration" tulajdonság, amely egy vektormezőhöz szükséges. Kiválasztja a mező algoritmuskonfigurációját.

2021-04-30-Preview hozzáadja:

  • "szemanticConfiguration" a szemantikai rangsorolás adott mezőkre való hatókörének meghatározásához.
  • Az "identity", a "encryptionKey" alatt az ügyfél által felügyelt titkosítási kulcs lekérésére szolgál az Azure Key Vault egy felhasználó által hozzárendelt felügyelt identitás használatával.

2020-06-30-Preview hozzáadja:

  • "normalizers", a rendezések és szűrők kis- és nagybetűk érzéketlenségére szolgál.

Az index meghatározza az indexsémát, beleértve a mezők gyűjteményét (mezőnevek, adattípusok és attribútumok), valamint az egyéb keresési viselkedést meghatározó egyéb szerkezeteket (javaslattevőket, pontozási profilokat és CORS-konfigurációt).

A POST vagy a PUT parancsot használhatja létrehozási kérelemhez. Mindkét esetben a kérelemtörzs biztosítja az objektumdefiníciót.

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

Frissítési kérelmek esetén használja a PUT parancsot, és adja meg az index nevét az URI-n.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

MINDEN szolgáltatáskéréshez HTTPS szükséges. Ha az index nem létezik, létrejön. Ha már létezik, az új definícióra frissül.

Az index létrehozása létrehozza a sémát és a metaadatokat. Az index feltöltése külön művelet. Ehhez a lépéshez használhat indexelőt (lásd : Indexelőműveletek, támogatott adatforrásokhoz elérhető) vagy Dokumentumok hozzáadása, frissítése vagy törlése. A létrehozható indexek maximális száma tarifacsomagonként változik. Az egyes indexeken belül az egyes elemekre korlátozások vonatkoznak. További információ: Az Azure AI Search szolgáltatáskorlátai.

A meglévő indexek frissítésének tartalmaznia kell a teljes sémadefiníciót, beleértve a megőrizni kívánt eredeti definíciókat is. Általánosságban elmondható, hogy a frissítések legjobb módja az indexdefiníció lekérése get-lel, módosítással, majd PUT-tal történő frissítése.

Mivel egy meglévő index tartalommal rendelkezik, számos indexmódosításhoz az index elvetése és újraépítése szükséges. A következő sémamódosítások kivételt képeznek a szabály alól:

  • Új mezők hozzáadása

  • Pontozási profilok hozzáadása vagy módosítása

  • Szemantikai konfigurációk hozzáadása vagy módosítása

  • CORS-beállítások módosítása

  • Meglévő mezők módosítása az alábbi három módosítás bármelyikével:

    • Mezők megjelenítése vagy elrejtése (retrievable: true | false)
    • A lekérdezéskor használt elemző módosítása (searchAnalyzer)
    • A lekérdezéskor használt szinonimatérkép hozzáadása vagy szerkesztése (synonymMaps)

Ha a fenti sémák bármelyikét módosítani szeretné egy meglévő indexen, adja meg az index nevét a kérelem URI-ján, majd adjon meg egy teljes indexdefiníciót az új vagy módosított elemekkel.

Új mező hozzáadásakor az index összes meglévő dokumentuma automatikusan null értékkel rendelkezik az adott mezőhöz. A rendszer nem használ fel további tárterületet, amíg két dolog valamelyike nem következik be: az új mezőhöz (egyesítés használatával) értéket ad meg, vagy új dokumentumokat ad hozzá.

suggesterFrissítések hasonló korlátozásokra van szükség: új mezőket adhat hozzá egyszerre suggester mezőkhöz, de a meglévő mezők nem távolíthatók el és nem vehetők fel suggesters index-újraépítés nélkül.

Frissítések elemzőhöz, jogkivonat-jelölőhöz, jogkivonatszűrőhöz vagy karakterszűrőhöz nem engedélyezett. Újak hozhatók létre a kívánt módosításokkal, de az új elemződefiníciók hozzáadásakor offline állapotba kell helyeznie az indexet. Ha az allowIndexDowntime indexfrissítési kérelemben igaz értékre állítja a jelzőt, az offline állapotba helyezi az indexet:

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

Ez a művelet legalább néhány másodpercig offline állapotba helyezi az indexet, ami azt jelenti, hogy az indexelés és a lekérdezési kérelmek meghiúsulnak, amíg az index újra online állapotba nem kerül, és készen áll a kérések kezelésére.

URI-paraméterek

Paraméter Leírás
szolgáltatásnév Kötelező. Állítsa ezt az értéket a keresési szolgáltatás egyedi, felhasználó által definiált nevére.
index neve Put használata esetén az URI-n kötelező megadni. A névnek kisbetűnek kell lennie, betűvel vagy számmal kell kezdődnie, nincsenek perjelei vagy pontjai, és 128 karakternél kevesebbnek kell lennie. A kötőjelek nem lehetnek egymást követők.
api-verzió Kötelező. Az aktuális előzetes verzió: 2023-07-23-preview. További verziókért lásd: API-verziók .
allowIndexDowntime Választható. Alapértelmezés szerint hamis. Bizonyos frissítések esetében igaz értékre van állítva, például elemző, jogkivonat-jelölő, jogkivonatszűrő, karakterszűrő vagy hasonlósági tulajdonság hozzáadása vagy módosítása esetén. Az index offline állapotba kerül a frissítés során, általában legfeljebb néhány másodpercig.

Kérelemfejlécek

Az alábbi táblázat a szükséges és nem kötelező kérésfejléceket ismerteti.

Mezők Description
Content-Type Kötelező. Állítsa ezt az értéket a következő értékre: 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 generált sztring, amely hitelesíti a kérést a keresési szolgáltatásnak. A létrehozási kérelmeknek tartalmazniuk kell egy api-key , a rendszergazdai kulcsra beállított fejlécet (a lekérdezési kulcs helyett). A részletekért lásd: Csatlakozás az Azure AI Search szolgáltatáshoz kulcshitelesítés használatával .

Kérelem törzse

A kérelem törzse tartalmaz egy sémadefiníciót, amely tartalmazza az indexbe betáplált dokumentumok adatmezőinek listáját.

Az alábbi JSON egy olyan séma magas szintű ábrázolása, amely támogatja a vektorkeresést. A sémákhoz kulcsmező szükséges, és ez a kulcsmező kereshető, szűrhető, rendezhető és facetable is lehet.

A vektorkeresési mező típusa Collection(Edm.Single). Mivel a vektormezők nem szövegesek, a vektormezők nem használhatók kulcsként, és nem fogadnak el elemzőket, normalizálókat, javasolókat és szinonimákat. A tulajdonságnak "dimensions" (dimenziók) és "vectorSearchConfiguration" (vektorSearchConfiguration) tulajdonságot kell tartalmaznia.

A vektorkeresést támogató sémák a kulcsszókeresést is támogathatják. Az index más nem észlelő mezői az indexben szereplő elemzőket, szinonimákat és pontozási profilokat használhatják.

{  
  "name": (optional on PUT; required on POST) "Name of the index",
  "description": (optional) "Description of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Single) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "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),  
      "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)
      "normalizer": "name_of_normalizer", (optional, applies only to filterable, facetable, or sortable Edm.String and Collection(Edm.String) fields.)
      "synonymMaps": [ "name_of_synonym_map" ], (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ], (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
      "dimensions": 1234, (required for vector field definitions. Prohibited for non-vector fields. Integer specifying the dimensionality of the embeddings generated by a machine learning model)
      "vectorSearchConfiguration": "name_of_algorithm_config" (required for vector field definitions. Prohibited for non-vector fields. This should reference an algorithm configuration.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "semantic": (optional) { },
  "vectorSearch": (optional) {
    "algorithmConfigurations": [
        {
            "name": "name_of_algorithm_config",
            "kind": "hnsw" (algorithm type. Only "hnsw" is supported currently.),
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]},
  "normalizers":(optional) [ ... ],
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

A kérelem a következő tulajdonságokat tartalmazza:

Tulajdonság Leírás
name Kötelező. Az index neve. Az indexnevek csak kisbetűket, számjegyeket vagy kötőjeleket tartalmazhatnak, nem kezdődhetnek és nem végződhetnek kötőjelekkel, és legfeljebb 128 karakter hosszúságúak lehetnek.
leírás Nem kötelező leírás.
Mezők Az index mezőinek gyűjteménye, ahol minden mezőnek van egy neve, egy támogatott adattípus , amely megfelel az Entitásadat-modellnek (EDM) és olyan attribútumoknak, amelyek engedélyezhető műveleteket határoznak meg az adott mezőben. A mezők gyűjteményének egy típusú Edm.String mezővel kell rendelkeznie, amelynek "kulcs" értéke "true". Ez a mező az indexben tárolt minden egyes dokumentum egyedi azonosítóját (más néven dokumentumazonosítóját) jelöli. A mezők gyűjteménye mostantól fogadja a vektormezőket.
Hasonlóság Választható. A 2020. július 15. előtt létrehozott szolgáltatások esetében állítsa be ezt a tulajdonságot úgy, hogy a BM25 rangsorolási algoritmust használja.
javaslattevők Olyan szerkezetet ad meg, amely előtagokat tárol a részleges lekérdezések, például az automatikus kiegészítés és a javaslatok egyeztetéséhez.
scoringProfiles Választható. A teljes szöveges lekérdezések relevanciájának finomhangolásához használatos.
Szemantikai Választható. Meghatározza a szemantikai keresési képességeket befolyásoló keresési index paramétereit. Szemantikai konfiguráció szükséges a szemantikai lekérdezésekhez. További információ: Szemantikai lekérdezés létrehozása.
vectorSearch Választható. Különböző vektoros keresési beállításokat konfigurál. Csak vektoros keresési algoritmusok konfigurálhatók.
normalizálók Választható. Normalizálja a sztringek lexikográfiai sorrendjét, így a kis- és nagybetűket nem megkülönböztető rendezési és szűrési kimenetet hoz létre.
elemzők, charFilters, tokenizers, tokenFilters Választható. Egyéni elemzők definiálása esetén adja meg az index ezen szakaszait. Alapértelmezés szerint ezek a szakaszok null értékűek.
defaultScoringProfile Az alapértelmezett pontozási viselkedést felülíró egyéni pontozási profil neve.
corsOptions Választható. Az indexre irányuló, eltérő eredetű lekérdezésekhez használatos.
encryptionKey Választható. Az index további titkosításához használatos, ügyfél által felügyelt titkosítási kulcsokkal (CMK) az Azure Key Vault. A 2019-01-01-01-en vagy azt követően létrehozott számlázható keresési szolgáltatásokhoz érhető el.

Reagálás

A sikeres létrehozási kéréshez a "201 Létrehozva" állapotkódnak kell megjelennie. Alapértelmezés szerint a válasz törzse tartalmazza a létrehozott indexdefiníció JSON-ját. Ha azonban a Kérés előnyben részesítése fejléc a return=minimal értékre van állítva, a válasz törzse üres, a sikerességi állapotkód pedig "204 Nincs tartalom" a "201 Létrehozva" helyett. Ez attól függetlenül igaz, hogy a PUT vagy a POST használatával hozza létre az indexet.

Sikeres frissítési kérés esetén a "204 Nincs tartalom" üzenetnek kell megjelennie. Alapértelmezés szerint a választörzs üres. Ha azonban a kérelem fejléce Prefer értékre return=representationvan állítva, a válasz törzse tartalmazza a frissített indexdefiníció JSON-ját. Ebben az esetben a siker állapotkódja "200 OK".

Példák

Példa: Vektor

A vektoros keresés a mező szintjén van implementálva. Ez a definíció a vektormezőkre helyezi a fókuszt. A vektormezőknek az egyszeres pontosságú lebegőpontos értékek tárolására használt típusúnak Collection(Edm.Single) kell lenniük. A vektormezők "dimenziók" tulajdonsága tartalmazza a beágyazások létrehozásához használt gépi tanulási modell által támogatott kimeneti dimenziók számát. Ha például a text-embedding-ada-002 fájlt használja, a kimeneti dimenziók maximális száma ebben a dokumentumban 1536. Az "algorithmConfiguration" a "vectorSearch" konfiguráció nevére van beállítva az indexben. Az indexben több is megadható, majd mezőnként egyet adhat meg.

Számos attribútum csak a nem adattitkos mezőkre vonatkozik. Az olyan attribútumok, mint a "szűrhető", a "rendezhető", a "facetable", az "analyzer", a "normalizer" és a "szinonimatérképek" figyelmen kívül lesznek hagyva a vektormezők esetében. Hasonlóképpen, ha csak vektoros tulajdonságokat állít be, például a "dimenziókat" vagy a "vectorSearchConfiguration" tulajdonságot az alfanumerikus tartalmat tartalmazó mezőre, a rendszer figyelmen kívül hagyja ezeket az attribútumokat.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "retrievable": true,
            "filterable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    }
}

Példa: Mezőgyűjtemények vektoros és nem vektoros mezőkkel

A vektoros keresés a mező szintjén van implementálva. A hibrid lekérdezési forgatókönyvek támogatásához hozzon létre mezőpárokat a vektoros és a nem virtuális lekérdezésekhez. A "title", "titleVector", "content", "contentVector" mezők ezt az egyezményt követik. Ha szemantikai keresést is szeretne használni, ezeknek a viselkedéseknek nem megfelelő szövegmezőkkel kell rendelkezniük.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "filterable": true
        },
        {
            "name": "title",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "content",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "category",
            "type": "Edm.String",
            "filterable": true,
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "corsOptions": {
        "allowedOrigins": [
            "*"
        ],
        "maxAgeInSeconds": 60
    },
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    },
    "semantic": {
        "configurations": [
            {
                "name": "my-semantic-config",
                "prioritizedFields": {
                    "titleField": {
                        "fieldName": "title"
                    },
                    "prioritizedContentFields": [
                        {
                            "fieldName": "content"
                        }
                    ],
                    "prioritizedKeywordsFields": [
                        {
                            "fieldName": "category"
                        }
                    ]
                }
            }
        ]
    }
}

Példa: Indexséma egyszerű és összetett mezőkkel

Az első példa egy teljes indexsémát mutat be egyszerű és összetett mezőkkel. Legalább egy sztringmezőben true (igaz) értékre kell állítani a "key" (kulcs) értéket.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true, "normalizer": "lowercase" },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" }
        ]
    }
  ],
  "suggesters": [ ],
  "analyzers": [ ],
  "normalizers": [ ],
  "encryptionKey": [ ]
}  

Példa: Javaslattevők

A javaslattevő-definícióknak "kereshető" és "lekérdezhető" sztringmezőket kell megadniuk (a REST API-kban alapértelmezés szerint minden egyszerű mező)."retrievable": true A javaslattevő definiálása után név alapján hivatkozhat rá a Javaslatok API-t vagy az automatikus kiegészítési API-t használó lekérdezési kérelmekben attól függően, hogy egyezést vagy a lekérdezési kifejezés hátralévő részét szeretné-e visszaadni.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "suggesters": [
    {  
      "name": "sg",  
      "searchMode": "analyzingInfixMatching",  
      "sourceFields": ["HotelName", "Category", "Tags"]  
    } 
  ]
} 

Példa: Elemzők és normalizálók

Az elemzőkre és normalizálókra meződefiníciók hivatkoznak, és előre definiálhatók vagy egyéniek is lehetnek. Ha egyéni elemzőket vagy normalizálókat használ, adja meg őket az indexben az "elemzők" és a "normalizers" szakaszokban.

Az alábbi példa a "Címkék" egyéni elemzőit és normalizálóit szemlélteti. Emellett egy előre definiált normalizálót (standard) és elemzőt (en.microsoft) is bemutat a "HotelName" és a "Description" kifejezéshez.

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false, "normalizer": standard  },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft"},
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ],
  "normalizers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomNormalizer",
      "name": "tagsNormalizer",
      "tokenFilters": [ "asciifolding", "lowercase" ]
    }
  ]
}  

Példa: A keresési relevancia hasonlósága

Ez a tulajdonság beállítja a rangsorolási algoritmust, amellyel relevanciapontot hozhat létre egy teljes szöveges keresési lekérdezés keresési eredményeiben. A 2020. július 15. után létrehozott szolgáltatások esetében ez a tulajdonság figyelmen kívül lesz hagyva, mert a hasonlósági algoritmus mindig BM25. A 2020. július 15. előtt létrehozott meglévő szolgáltatások esetében a BM25-öt a következőképpen állíthatja be:

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

Példa: CORS-beállítások

Az ügyféloldali JavaScript alapértelmezés szerint nem tud API-kat meghívni, mivel a böngésző megakadályozza az összes eltérő eredetű kérést. Ha engedélyezni szeretné az eltérő eredetű lekérdezéseket az indexben, engedélyezze a CORS-t (forrásközi erőforrás-megosztás (Wikipédia)) az corsOptions attribútum beállításával. Biztonsági okokból csak a lekérdezési API-k támogatják a CORS-t.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

Példa: Titkosítási kulcsok hozzáférési hitelesítő adatokkal

A titkosítási kulcsok az ügyfél által kezelt kulcsok, amelyeket extra titkosításhoz használnak. További információ: Titkosítás ügyfél által felügyelt kulcsokkal az Azure Key Vault.

{
    "name": "hotels",  
    "fields": [ omitted for brevity ],
    "suggesters": [ omitted for brevity ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
       "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
       "keyVaultKeyVersion": "Version of the Azure Key Vault key",
       "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
       "accessCredentials": (optional, only if not using managed system identity) {
          "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
          "applicationSecret": "Authentication key of the specified AAD application)"
        }
    }
} 

Példa: Titkosítási kulcsok felügyelt identitással

Az Azure Key Vault egy rendszer által hozzárendelt vagy felhasználó által hozzárendelt (előzetes verziójú) felügyelt identitással hitelesíthet. Ebben az esetben hagyja ki a hozzáférési hitelesítő adatokat, vagy állítsa null értékre. Az alábbi példa egy felhasználó által hozzárendelt felügyelt identitást mutat be. A rendszer által hozzárendelt felügyelt identitás használatához hagyja ki a hozzáférési hitelesítő adatokat és az identitást. Mindaddig, amíg a keresési szolgáltatás rendszeridentitása rendelkezik engedélyekkel az Azure Key Vault, a kapcsolatkérésnek sikeresnek kell lennie.

{
  "name": "hotels",  
  "fields": [ omitted for brevity ],
  "suggesters": [ omitted for brevity ],
  "analyzers": [ omitted for brevity ],
  "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": null,
          "identity" : { 
              "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
              "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
          }
    }
} 

Példa: Pontozási profilok

A pontozási profil a séma olyan szakasza, amely egyéni pontozási viselkedéseket határoz meg, amelyek segítségével befolyásolhatja, hogy mely dokumentumok jelenjenek meg magasabban a keresési eredményekben. A pontozási profilok mezősúlyokból és függvényekből állnak. A használatukhoz név szerint kell megadnia egy profilt a lekérdezési sztringen. További információt a Pontozási profilok hozzáadása keresési indexhez (Azure AI Search REST API) című témakörben talál.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

Példa: Szemantikai konfigurációk

A szemantikai konfiguráció egy indexdefiníció része, amely konfigurálja, hogy mely mezőket használja a szemantikai keresés a rangsoroláshoz, a feliratokhoz, a kiemelésekhez és a válaszokhoz. A szemantikai keresés használatához meg kell adnia egy szemantikai konfiguráció nevét a lekérdezés időpontjában. További információ: Szemantikai lekérdezés létrehozása.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "my-semantic-config",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "hotelName"
               },
           "prioritizedContentFields": [
             {
               "fieldName": "description"
             },
             {
               "fieldName": "description_fr"
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "tags"
             },
             {
               "fieldName": "category"
             }
           ]
         }
       }
     ]
   }
}

Definíciók

Hivatkozás Description
corsOptions Felsorolja az indexhez megadott tartományokat vagy forrásokat.
defaultScoringProfile Az alapértelmezett pontozási viselkedést felülíró egyéni pontozási profil neve.
encryptionKey Konfigurálja a kapcsolatot az Azure Key Vault ügyfél által felügyelt titkosításhoz.
Mezők A keresési indexben lévő mezők definícióit és attribútumait állítja be.
normalizálók Egyéni normalizálót konfigurál. Normalizálja a sztringek lexikográfiai sorrendjét, így nem különbözteti meg a kis- és nagybetűket a rendezési, az arculati és a szűrési kimenettől.
Szemantikai Konfigurálja a szemantikai keresés által használt mezőket a rangsoroláshoz, a feliratokhoz, a kiemelésekhez és a válaszokhoz.
scoringProfiles A teljes szöveges lekérdezések relevanciájának finomhangolásához használatos.
Hasonlóság
javaslattevők Konfigurálja a belső előtagtárolót a részleges lekérdezések, például az automatikus kiegészítés és a javaslatok egyeztetéséhez.
vectorSearch Konfigurálja a vektormezőkhöz használt algoritmust.

corsOptions

Az ügyféloldali JavaScript alapértelmezés szerint nem tud API-kat meghívni, mivel a böngésző megakadályozza az összes eltérő eredetű kérést. Ha engedélyezni szeretné az eltérő eredetű lekérdezéseket az indexben, engedélyezze a CORS-t (forrásközi erőforrás-megosztást) a "corsOptions" attribútum beállításával. Biztonsági okokból csak a lekérdezési API-k támogatják a CORS-t.

Attribútum Leírás
allowedOrigins Kötelező. Az indexhez hozzáférést kapó források vesszővel tagolt listája, ahol az egyes források általában protocol://<-qualified-domain-name>:<port> formában találhatók (bár a <portot> gyakran kihagyják). Ez azt jelenti, hogy az ezekből a forrásokból kiszolgált JavaScript-kódok lekérdezhetők az indexben (feltéve, hogy érvényes API-kulcsot biztosít). Ha minden forráshoz engedélyezni szeretné a hozzáférést, adja meg * egyetlen elemként az "allowedOrigins" tömbben. Ez éles környezetben nem ajánlott, de fejlesztési vagy hibakeresési célokra hasznos lehet.
maxAgeInSeconds Választható. A böngészők ezt az értéket használják a CORS elővizsgálati válaszainak gyorsítótárazásához szükséges időtartam (másodpercben) meghatározásához. Ennek nem negatív egész számnak kell lennie. A teljesítmény javul, ha ez az érték nagyobb, de ezeket a nyereségeket ellensúlyozza a CORS-szabályzat módosításainak érvénybe lépéséhez szükséges idő. Ha nincs beállítva, a rendszer az alapértelmezett 5 perces időtartamot használja.

defaultScoringProfile

Választható. Egy sztring, amely az indexben definiált egyéni pontozási profil neve. A rendszer akkor hívja meg az alapértelmezett profilt, ha a lekérdezési sztringben nincs explicit módon megadva egyéni profil. További információ: Pontozási profilok hozzáadása keresési indexhez.

encryptionKey

Konfigurálja a kapcsolatot az Azure Key Vault kiegészítő, ügyfél által felügyelt titkosítási kulcsokhoz (CMK). A 2019. január 1-jén vagy azt követően létrehozott számlázható keresési szolgáltatásokhoz érhető el.

A kulcstartóval való kapcsolatot hitelesíteni kell. Ehhez használhat "hozzáférési hitelesítő adatokat" vagy felügyelt identitást.

A felügyelt identitások lehetnek rendszer vagy felhasználó által hozzárendelt (előzetes verzió). Ha a keresési szolgáltatás rendszer által hozzárendelt felügyelt identitással és szerepkör-hozzárendeléssel is rendelkezik, amely olvasási hozzáférést biztosít a kulcstartóhoz, kihagyhatja az "identitást" és a "hozzáférési hitelesítő adatokat" is, és a kérés a felügyelt identitással hitelesíti magát. Ha a keresési szolgáltatás felhasználó által hozzárendelt identitással és szerepkör-hozzárendeléssel rendelkezik, állítsa az "identity" tulajdonságot az identitás erőforrás-azonosítójára.

Attribútum Leírás
keyVaultKeyName Kötelező. A titkosításhoz használt Azure Key Vault kulcs neve.
keyVaultKeyVersion Kötelező. Az Azure Key Vault kulcs verziója.
keyVaultUri Kötelező. A kulcsot biztosító Azure Key Vault (más néven DNS-név) URI-ja. Példa URI lehet https://my-keyvault-name.vault.azure.net
hozzáférési hitelesítő adatok Választható. Ha felügyelt identitást használ, hagyja ki ezt a tulajdonságot. Ellenkező esetben a "hozzáférési hitelesítő adatok" tulajdonságai a következők:
"applicationId" (egy Azure Active Directory-alkalmazásazonosító, amely hozzáférési engedélyekkel rendelkezik a megadott Azure-Key Vault).
"applicationSecret" (a megadott Azure AD alkalmazás hitelesítési kulcsa).
identity Nem kötelező, kivéve, ha felhasználó által hozzárendelt felügyelt identitást használ a keresési szolgáltatás Azure-Key Vault való kapcsolatához. A formátum "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

fields

Egy meződefiníció attribútumairól tartalmaz információkat.

Attribútum Leírás
name Kötelező. Beállítja a mező nevét, amelynek egyedinek kell lennie az index vagy szülőmező mezőgyűjteményében.
típus Kötelező. Beállítja a mező adattípusát. A mezők lehetnek egyszerűek vagy összetettek. Az egyszerű mezők primitív típusúak, például Edm.String szöveghez vagy Edm.Int32 egész számokhoz. Az összetett mezők lehetnek olyan almezők, amelyek maguk is egyszerűek vagy összetettek. Ez lehetővé teszi objektumok és objektumtömbök modellezését, így a legtöbb JSON-objektumstruktúrát feltöltheti az indexbe. Collection(Edm.Single) egypontos lebegőpontos értékeket tartalmaz. Csak vektormezőkhöz használatos, és kötelező. A támogatott típusok teljes listáját a Támogatott adattípusok című témakörben találja.
kulcs Kötelező. Állítsa ezt az attribútumot true (igaz) értékre, hogy egy mező értékei egyedileg azonosítják az index dokumentumait. A kulcsmezők értékeinek maximális hossza 1024 karakter. Minden indexben pontosan egy legfelső szintű mezőt kell kiválasztani kulcsmezőként, és típusának Edm.Stringkell lennie. Az alapértelmezett érték az false egyszerű mezőkhöz és null az összetett mezőkhöz tartozik.

A kulcsmezők a dokumentumok közvetlen keresésére és adott dokumentumok frissítésére vagy törlésére használhatók. A kulcsmezők értékeit a rendszer a dokumentumok keresésekor vagy indexelésekor megkülönbözteti a kis- és nagybetűk megkülönböztetésével. További információt a Dokumentum keresése és a Dokumentumok hozzáadása, frissítése vagy törlése című témakörben talál.
lekérdezhető Azt jelzi, hogy a mező visszaadható-e egy keresési eredményben. Állítsa ezt az attribútumot értékre false , ha egy mezőt (például margót) szeretne szűrőként, rendezési vagy pontozási mechanizmusként használni, de nem szeretné, hogy a mező látható legyen a végfelhasználó számára. Ennek az attribútumnak true kulcsmezőkhöz, összetett mezőkhöz kell lennie null . Ez az attribútum a meglévő mezőkön módosítható. A lekért érték true beállítása nem okoz növekedést az indextárolási követelményekben. Az alapértelmezett érték az true egyszerű mezőkhöz és null az összetett mezőkhöz tartozik.
Kereshető Azt jelzi, hogy a mező kereshető-e teljes szöveges formátumban, és hivatkozható-e rá a keresési lekérdezésekben. Ez azt jelenti, hogy lexikális elemzésen megy keresztül, például szótörést az indexelés során. Ha egy kereshető mezőt egy olyan értékre állít be, mint a "Napos nap", akkor az belsőleg normalizálódik a "sunny" és a "day" egyes tokenekre. Ez lehetővé teszi a kifejezések teljes szöveges keresését. A vagy Collection(Edm.String) típusú Edm.String mezők alapértelmezés szerint kereshetők. Ennek az attribútumnak más nem sztring típusú egyszerű mezőkhöz kell lennie false , és összetett mezőkhöz kell lennie null .

A kereshető mezők extra helyet foglalnak el az indexben, mivel az Azure AI Search feldolgozza ezeknek a mezőknek a tartalmát, és kiegészítő adatstruktúrákba rendezi őket a nagy teljesítményű kereséshez. Ha helyet szeretne menteni az indexben, és nincs szükség egy mezőre a keresésekben, állítsa a kereshető értéket értékre false. A részletekért lásd: A teljes szöveges keresés működése az Azure AI Searchben .
szűrhető Azt jelzi, hogy engedélyezi-e a mező hivatkozását a lekérdezésekben $filter . A szűrhető érték a sztringek kezelésének módjában különbözik a kereshetőtől. A típusú Edm.String vagy Collection(Edm.String) szűrhető mezők nem esnek át lexikális elemzésen, így az összehasonlítások csak pontos egyezéseket tartalmaznak. Ha például egy ilyen mezőt f "Napos nap" értékre állít be, $filter=f eq 'sunny' nem talál egyezést, de $filter=f eq 'Sunny day' igen. Ennek az attribútumnak összetett mezőkhöz kell lennie null . Az alapértelmezett érték az true egyszerű mezőkhöz és null az összetett mezőkhöz tartozik. Az index méretének csökkentése érdekében állítsa ezt az attribútumot olyan mezőkre false , amelyekre nem fog szűrni.
Sortable Azt jelzi, hogy engedélyezi-e a mező hivatkozását kifejezésekben $orderby . Az Azure AI Search alapértelmezés szerint pontszám szerint rendezi az eredményeket, de sok esetben a felhasználók a dokumentumok mezői szerint szeretnének rendezni. Egy egyszerű mező csak akkor rendezhető, ha egyértékű (a szülődokumentum hatókörében egyetlen értékkel rendelkezik).

Az egyszerű gyűjteménymezők nem rendezhetők, mivel többértékűek. Az összetett gyűjtemények egyszerű almezői szintén többértékűek, ezért nem rendezhetők. Ez akkor is igaz, ha egy közvetlen szülőmezőről vagy egy elődmezőről van szó, ez az összetett gyűjtemény. Az összetett mezők nem rendezhetők, és az ilyen mezőkhöz a rendezhető attribútumnak kell lennie null . A rendezhető mezők alapértelmezett értéke az true egyértékű egyszerű mezők, false a többértékű egyszerű mezők és null az összetett mezők.
facetable Azt jelzi, hogy engedélyezi-e a mező hivatkozását az aspektusos lekérdezésekben. Általában a találatok kategória szerinti számát (például digitális kamerák keresését és a találatok márka, megapixelek, ár stb. szerinti megtekintését) tartalmazó keresési eredmények bemutatójában használatos. Ennek az attribútumnak összetett mezőkhöz kell lennie null . A típusú Edm.GeographyPoint mezők Collection(Edm.GeographyPoint) nem lehetnek táblázatosak. Az alapértelmezett érték az true összes többi egyszerű mezőhöz tartozik. Az index méretének csökkentése érdekében állítsa ezt az attribútumot false olyan mezőkre, amelyekre nem fog jellemzőként hivatkozni.
Elemző Beállítja a lexikális elemzőt a sztringek tokenizálásához az indexelési és lekérdezési műveletek során. A tulajdonság érvényes értékei közé tartoznak a nyelvelemzők, a beépített elemzők és az egyéni elemzők. A mező alapértelmezett értéke: standard.lucene. Ez az attribútum csak kereshető mezőkkel használható, és nem állítható be a searchAnalyzer vagy az indexAnalyzer paraméterrel együtt. Miután kiválasztotta az elemzőt, és a mező létrejött az indexben, nem módosítható a mezőhöz. Összetett mezőkhöz kell lennienull.
searchAnalyzer Állítsa be ezt a tulajdonságot az indexAnalyzerrel együtt, hogy különböző lexikális elemzőket adjon meg az indexeléshez és a lekérdezésekhez. Ha ezt a tulajdonságot használja, állítsa az elemző értékét értékre null , és győződjön meg arról, hogy az indexAnalyzer értéke engedélyezett. A tulajdonság érvényes értékei közé tartoznak a beépített elemzők és az egyéni elemzők. Ez az attribútum csak kereshető mezőkkel használható. A keresési elemző frissíthető egy meglévő mezőn, mivel csak lekérdezési időpontban használható. Összetett mezőkhöz kell lennienull.
indexAnalyzer A tulajdonság és a searchAnalyzer együttes beállításával különböző lexikális elemzőket adhat meg az indexeléshez és a lekérdezésekhez. Ha ezt a tulajdonságot használja, állítsa az elemző értékét értékre null , és győződjön meg arról, hogy a searchAnalyzer értéke engedélyezett. A tulajdonság érvényes értékei közé tartoznak a beépített elemzők és az egyéni elemzők. Ez az attribútum csak kereshető mezőkkel használható. Az indexelemző kiválasztása után nem módosítható a mezőhöz. Összetett mezőkhöz kell lennienull.
Normalizáló Beállítja a normalizálót szűrési, rendezési és arculati műveletekhez. Ez lehet egy előre definiált normalizáló neve vagy egy indexen belül definiált egyéni normalizáló neve. Az alapértelmezett érték a null, amely pontos egyezést eredményez a verbatim, nem elemzett szövegek esetében. Ez az attribútum csak olyan és Collection(Edm.String) mezőkkel Edm.String használható, amelyek legalább egy szűrhető, rendezhető vagy facetable tulajdonsága true (igaz) értékre van állítva. Normalizáló csak akkor állítható be a mezőben, ha hozzáadja az indexhez, és később nem módosítható. Összetett mezőkhöz kell lennienull. Az előre definiált normalizáló érvényes értékei a következők:

standard– Kisbetűk a szövegben, majd aszciifolding.
lowercase– Kisbetűssé alakítja a karaktereket.
uppercase – Nagybetűssé alakítja a karaktereket.
asciifolding – Átalakítja az alapszintű Latin Unicode-blokkban nem szereplő karaktereket ASCII-megfelelőjükké, ha van ilyen. Például módosítsa az "à" értéket "a" értékre.
elision– Eltávolítja az elisiont a tokenek elejéről.
szinonimatérképek A mezőhöz társítandó szinonimatérképek nevének listája. Ez az attribútum csak kereshető mezőkkel használható. Jelenleg mezőnként csak egy szinonimatérkép támogatott. Szinonimatérkép mezőhöz rendelése biztosítja, hogy a mezőt megcélzó lekérdezési kifejezések a szinonimatérkép szabályainak használatával lekérdezéskor ki legyenek bontva. Ez az attribútum a meglévő mezőkön módosítható. Összetett mezők esetén üres gyűjteménynek kell lennie null .
fields Almezők listája, ha ez egy vagy Collection(Edm.ComplexType)típusú Edm.ComplexType mező. Egyszerű mezők esetén üresnek vagy üresnek kell lennie null . Az almezők használatáról további információt az Összetett adattípusok modellezése az Azure AI Searchben című témakörben talál.
Méretek Egész. Vektormezőkhöz szükséges. **Ennek meg kell egyeznie a beágyazási modell kimeneti beágyazási méretével. Egy népszerű Azure OpenAI-modell text-embedding-ada-002esetében például a kimeneti dimenziói 1536, így ez lenne a vektormezőhöz beállítandó dimenziók. A dimensions attribútum legalább 2 és legfeljebb 2048 lebegőpontos értékkel rendelkezik.
vectorSearchConfiguration A vektormező-definíciókhoz szükséges. A vektormező által használt "vectorSearch" algoritmuskonfiguráció nevét adja meg. A mező létrehozása után nem módosíthatja a vectorSearchConfiguration nevet, de módosíthatja az algoritmus-konfiguráció tulajdonságait az indexben. Ez lehetővé teszi az algoritmus típusának és paramétereinek módosítását.

Megjegyzés

A szűrhető, rendezhető vagy facetable típusú Edm.String mezők hossza legfeljebb 32 kilobájt lehet. Ennek az az oka, hogy az ilyen mezők értékeit egyetlen keresési kifejezésként kezeli a rendszer, és az Azure AI Searchben egy kifejezés maximális hossza 32 kilobájt. Ha ennél több szöveget kell egyetlen sztringmezőben tárolnia, explicit módon kell beállítania a szűrhető, rendezhető és facetable false értéket az indexdefinícióban.

Ha egy mezőt kereshető, szűrhető, rendezhető vagy facetable típusúként állít be, az hatással van az index méretére és a lekérdezési teljesítményre. Ne állítsa be ezeket az attribútumokat olyan mezőkre, amelyekre nem kell hivatkozni a lekérdezési kifejezésekben.

Ha egy mező nincs beállítva kereshető, szűrhető, rendezhető vagy facetable típusúra, akkor a mezőre egyetlen lekérdezési kifejezésben sem lehet hivatkozni. Ez olyan mezők esetében hasznos, amelyeket nem használnak lekérdezésekben, de szükségesek a keresési eredményekben.

normalizálók

Definiál egy egyéni normalizálót , amely a karakterszűrők és jogkivonatszűrők felhasználó által meghatározott kombinációjával rendelkezik. Miután definiált egy egyéni normalizálót az indexben, név szerint megadhatja azt egy meződefinícióban.

Attribútum Leírás
name Kötelező. Sztringmező, amely felhasználó által definiált egyéni normalizálót határoz meg.
charFilters Egyéni normalizálóban használatos. Ez lehet egy vagy több, egyéni normalizálóban használható elérhető karakterszűrő :
leképezési
pattern_replace
tokenFilters Egyéni normalizálóban használatos. Egy vagy több, egyéni normalizálóban használható jogkivonat-döntő lehet:
arabic_normalization
asciifolding
cjk_width
elision
german_normalization
hindi_normalization indic_normalization
persian_normalization
scandinavian_normalization

scandinavian_folding sorani_normalization

kisbetűs
nagybetű

scoringProfiles

A pontozási profilok a teljes szöveges keresésre vonatkoznak. A profil egy indexben van definiálva, és olyan egyéni logikát határoz meg, amely magasabb keresési pontszámokat adhat a profilban meghatározott feltételeknek megfelelő dokumentumoknak. Létrehozhat több pontozási profilt, majd hozzárendelheti a kívánt profilt egy lekérdezéshez.

Ha egyéni profilt hoz létre, a beállításával defaultScoringProfilebeállíthatja az alapértelmezett profilt. További információ: Pontozási profilok hozzáadása keresési indexhez.

Szemantikai

A szemantikai konfiguráció egy indexdefiníció része, amely konfigurálja, hogy mely mezőket használja a szemantikai keresés a rangsoroláshoz, a feliratokhoz, a kiemelésekhez és a válaszokhoz. A szemantikai konfigurációk egy címmezőből, a rangsorba helyezett tartalommezőkből és a rangsorban szereplő kulcsszómezőkből állnak. Legalább egy mezőt meg kell adni a három altulajdonság mindegyikéhez (titleField, prioritizedKeywordsFields és prioritizedContentFields). Bármely típusú Edm.String mező Collection(Edm.String) használható szemantikai konfiguráció részeként.

A szemantikai keresés használatához meg kell adnia egy szemantikai konfiguráció nevét a lekérdezés időpontjában. További információ: Szemantikai lekérdezés létrehozása.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "name of the semantic configuration",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "..."
               },
           "prioritizedContentFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ]
         }
       }
     ]
   }
}
Attribútum Leírás
name Kötelező. A szemantikai konfiguráció neve.
prioritizedFields Kötelező. A szemantikai rangsoroláshoz, feliratokhoz, kiemelésekhez és válaszokhoz használandó cím- és tartalom- és kulcsszómezőket ismerteti. A három altulajdonság közül legalább egyet (titleField, prioritizedKeywordsFields és prioritizedContentFields) be kell állítani.
prioritizedFields.titleField Meghatározza a szemantikai rangsoroláshoz, a feliratokhoz, a kiemelésekhez és a válaszokhoz használandó címmezőt. Ha nincs címmező az indexben, hagyja üresen ezt a mezőt.
prioritizedFields.prioritizedContentFields Meghatározza a szemantikai rangsoroláshoz, a feliratokhoz, a kiemelésekhez és a válaszokhoz használandó tartalommezőket. A legjobb eredmény érdekében a kijelölt mezőknek természetes nyelvű szöveget kell tartalmazniuk. A tömb mezőinek sorrendje a prioritásukat jelöli. Az alacsonyabb prioritású mezők csonkulhatnak, ha a tartalom hosszú.
prioritizedFields.prioritizedKeywordsFields Meghatározza a szemantikai rangsoroláshoz, a feliratokhoz, a kiemelésekhez és a válaszokhoz használandó kulcsszómezőket. A legjobb eredmény érdekében a kijelölt mezőknek tartalmazniuk kell a kulcsszavak listáját. A tömb mezőinek sorrendje a prioritásukat jelöli. Az alacsonyabb prioritású mezők csonkulhatnak, ha a tartalom hosszú.

Hasonlóság

Nem kötelező tulajdonság, amely a 2020. július 15. előtt létrehozott szolgáltatásokra vonatkozik. Ezekhez a szolgáltatásokhoz beállíthatja ezt a tulajdonságot a 2020 júliusában bevezetett BM25 rangsorolási algoritmus használatára. Az érvényes értékek a következők: "#Microsoft.Azure.Search.ClassicSimilarity" (az előző alapértelmezett) vagy "#Microsoft.Azure.Search.BM25Similarity"a .

A 2020 júliusa után létrehozott összes szolgáltatás esetében ennek a tulajdonságnak a beállítása nincs hatással. Minden újabb szolgáltatás a BM25-öt használja egyetlen rangsorolási algoritmusként a teljes szöveges kereséshez. További információ: Algoritmusok rangsorolása az Azure AI Searchben.

javaslattevők

Olyan szerkezetet ad meg, amely előtagokat tárol a részleges lekérdezések, például az automatikus kiegészítés és a javaslatok egyeztetéséhez.

Attribútum Leírás
name Kötelező. A javaslattevő neve.
sourceFields Kötelező. Egy vagy több sztringmező, amelyekhez engedélyezi az automatikus kiegészítést vagy a javasolt eredményeket.
searchMode Kötelező, és mindig értékre van analyzingInfixMatchingállítva. Meghatározza, hogy az egyeztetés a lekérdezési sztring bármely kifejezésében végbe megy.

vectorSearch

A vectorSearch objektum lehetővé teszi a vektorkeresési tulajdonságok konfigurálását. Jelenleg csak algoritmuskonfigurációk konfigurálhatók. Ez lehetővé teszi a vektormezőkhöz használt algoritmustípus és algoritmusparaméterek konfigurálását. Több konfigurációval is rendelkezhet. A vektormezők által hivatkozott konfigurációk nem módosíthatók és nem törölhetők. A nem hivatkozott konfigurációk módosíthatók vagy törölhetők. A vektormező-definíciónak (a mezők gyűjteményében) meg kell adnia, hogy a mező melyik vektorkeresési algoritmus-konfigurációt használja (a vectorSearchConfiguration tulajdonságon keresztül).

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Attribútum Leírás
name Kötelező. Az algoritmus-konfiguráció neve.
Fajta A használni kívánt algoritmustípus. Csak a "hnsw" támogatott, amely a Hierarchikus Navigable Small World (HNSW) algoritmus.
hnswParameters Választható. A "hnsw" algoritmus paraméterei. Ha ez az objektum nincs megadva, a rendszer az alapértelmezett értékeket használja.

hnswParameters

Ez az objektum az algoritmusparaméterek testreszabását hnsw tartalmazza. Az összes tulajdonság megadása nem kötelező, az alapértelmezett értékeket pedig akkor használja a rendszer, ha nem adja meg.

Attribútum Leírás
Metrika Sztring. A vektorok összehasonlításához használandó hasonlósági metrika. A esetében hnswaz engedélyezett értékek a következők: "cosine", "euclidean" és "dotProduct". Az alapértelmezett érték a "cosine".
m Egész. Az összes új elemhez létrehozott kétirányú kapcsolatok száma az építés során. Az alapértelmezett érték 4. A megengedett tartomány 4 és 10 között lehet. A nagyobb értékek sűrűbb gráfokhoz vezetnek, javítva a lekérdezési teljesítményt, de több memóriát és számítást igényelnek.
efConstruction Egész. Az indexelés során használt legközelebbi szomszédok dinamikus listájának mérete. Az alapértelmezett érték 400. Az engedélyezett tartomány 100 és 1000 között lehet. A nagyobb értékek jobb indexminőséget eredményeznek, de több memóriát és számítást igényelnek.
efSearch Egész. A legközelebbi szomszédokat tartalmazó dinamikus lista mérete, amelyet a keresési idő során használnak. Az alapértelmezett érték 500. A megengedett tartomány 100 és 1000 között lehet. A paraméter növelése javíthatja a keresési eredményeket, de lelassítja a lekérdezési teljesítményt.

Mivel efSearch ez egy lekérdezési idő paraméter, ez az érték akkor is frissíthető, ha egy meglévő mező algoritmuskonfigurációt használ.

Lásd még