Megosztás a következőn keresztül:


Index létrehozása vagy frissítése (REST API előzetes verziója)

A következővonatkozik: 2023-07-01-Preview. Ez a verzió már nem támogatott. Frissítés azonnal egy újabb verzióra.

Fontos

2023-07-01-Preview hozzáadja a vektorkeresést.

2021-04-30-Preview hozzáadja:

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

2020-06-30-Preview hozzáadja:

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

Egy index határozza meg az indexsémát, beleértve a mezők gyűjteményét (mezőnevek, adattípusok és attribútumok), de egyéb olyan szerkezeteket is (javaslattevők, pontozási profilok és CORS-konfiguráció), amelyek más keresési viselkedést határoznak meg.

A POST vagy a PUT parancsot használhatja létrehozási kérelemként. Mindkét esetben a kérelem törzse 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.

Index létrehozása létrehozza a sémát és a metaadatokat. Az index feltöltése külön művelet. Ebben a lépésben használhat indexelőt (lásd: Indexelő műveletek, támogatott adatforrásokhoz érhető el), vagy Dokumentumok hozzáadása, frissítése vagy törlése. A létrehozható indexek maximális száma a tarifacsomagtól függően változik. Az egyes indexeken belül az egyes elemekre vonatkozó korlátozások vannak érvényben. További információ: Azure AI Searchszolgáltatáskorlátai.

Meglévő index 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. A frissítésekhez általában az a legjobb minta, ha lekéri az indexdefiníciót egy GET-lel, módosítja, majd a PUT-tal frissíti.

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

  • Új mezők hozzáadása

  • Pontozó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ési időpontban használt elemző módosítása (searchAnalyzer)
    • A lekérdezési időpontban használt szinonimaké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 a mezőhöz. A rendszer nem használ fel további tárterületet, amíg két dolog egyike nem következik be: az új mező értéke (egyesítésihasználatával), vagy új dokumentumok kerülnek hozzáadásra.

A suggester frissítései hasonló korlátozásokkal rendelkeznek: a suggester egyidejűleg új mezők is hozzáadhatók, de a meglévő mezők nem távolíthatók el és nem vehetők fel suggesters index újraépítése nélkül.

Nem engedélyezett az elemző, a jogkivonat-elemző, a jogkivonatszűrő vagy a karakterszűrő frissítése. Újakat a kívánt módosításokkal hozhat létre, de az új elemződefiníciók hozzáadásakor offline állapotba kell helyeznie az indexet. A allowIndexDowntime jelző igaz értékre állítása az indexfrissítési kérelemben 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érelmek kezelésére.

URI-paraméterek

Paraméter Leírás
szolgáltatásnév Szükséges. Állítsa be 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űsnek kell lennie, betűvel vagy számmal kell kezdődnie, nincs perjele vagy pöttye, és 128 karakternél kevesebbnek kell lennie. A kötőjelek nem lehetnek egymást követők.
api-verzió Szükséges. További verziókért lásd API-verziókat.
allowIndexDowntime Szabadon választható. Alapértelmezés szerint hamis. Bizonyos frissítéseknél, például elemző, jogkivonat-elemző, jogkivonatszűrő, karakterszűrő vagy hasonlóság tulajdonság hozzáadásához vagy módosításához igaz értékre van állítva. 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érelemfejléceket ismerteti.

Mezők Leírás
Tartalomtípus Szükséges. Állítsa ezt az értéket 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 keresési szolgáltatásnak küldött kérést. A kéréseknek tartalmazniuk kell egy api-key fejlécet, amely a rendszergazdai kulcsra van állítva (a lekérdezési kulccsal szemben). A részletekért lásd: Csatlakozás az Azure AI Search szolgáltatáshoz kulcshitelesítési használatával.

Kérelem törzse

A kérelem törzse tartalmaz egy sémadefiníciót, amely tartalmazza az indexbe tá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őre van szükség, és ez a kulcsmező kereshető, szűrhető, rendezhető és facetable lehet.

A vektorkeresési mező Collection(Edm.Single)típusú. 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, javaslatokat vagy szinonimákat. Egy "dimensions" tulajdonságot és egy "vectorSearchConfiguration" 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 megtestesítő mezői használhatják az indexben szereplő elemzőket, szinonimákat és pontozási profilokat.

{  
  "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:

Ingatlan Leírás
név Szükséges. 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 indexhez tartozó mezők gyűjteménye, ahol minden mezőnek van 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 ezen a mezőn. A mezőgyűjteménynek egy Edm.String típusú mezővel kell rendelkeznie, amelynek "kulcs" értéke "true". Ez a mező az indexben tárolt összes dokumentum egyedi azonosítóját (más néven dokumentumazonosítóját) jelöli. A mezőgyűjtemény mostantól fogadja a vektormezőket.
hasonlóság Szabadon 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 válassza.
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 Szabadon választható. A teljes szöveges lekérdezések relevanciájának finomhangolásához használatos.
szemantikai Szabadon 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 Szabadon választható. Konfigurálja a különböző vektorkeresési beállításokat. Csak vektorkeresési algoritmusok konfigurálhatók.
normalizálók Szabadon választható. Normalizálja a sztringek lexikográfiai sorrendjét, így a kis- és nagybetűk érzéketlen rendezési és szűrési kimenetet eredményeznek.
elemzők, charFilters, tokenizers, tokenFilters Szabadon választható. Adja meg az index ezen szakaszait, ha egyéni elemzőketdefiniál. 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 Szabadon választható. Az indexre irányuló keresztirányú lekérdezésekhez használható.
encryptionKey Szabadon 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 Vaultban. A 2019.01.01-01-én vagy azt követően létrehozott számlázható keresési szolgáltatásokhoz érhető el.

Válasz

Sikeres létrehozási kérelem esetén a "201 Created" állapotkód jelenik meg. Alapértelmezés szerint a válasz törzse tartalmazza a létrehozott indexdefiníció JSON-ját. Ha azonban a Prefer kérés fejléce a return=minimal értékre van állítva, a válasz törzse üres, a sikerességi állapot kódja 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" szövegnek kell megjelennie. Alapértelmezés szerint a válasz törzse üres. Ha azonban a Prefer kérelemfejléc return=representationvan beállítva, a válasz törzse tartalmazza a frissített indexdefiníció JSON-ját. Ebben az esetben a sikerességi állapot kódja "200 OK".

Példák

Példa: Vektoros

A vektorkeresés a mező szintjén van implementálva. Ez a definíció a vektormezőkre helyezi a fókuszt. A vektormezőknek olyan típusúaknak kell lenniük, Collection(Edm.Single) egypontos lebegőpontos értékek tárolására szolgálnak. 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 értéket használja, a kimeneti dimenziók maximális száma 1536 a dokumentum . Az "algorithmConfiguration" a "vectorSearch" konfiguráció nevére van állítva az indexben. Az indexben több is definiálható, majd mezőnként egyet adhat meg.

Számos attribútum csak a nem avatott mezőkre vonatkozik. A vektormezők nem veszik figyelembe az olyan attribútumokat, mint a "szűrhető", a "rendezhető", a "facetable", az "analyzer", a "normalizer" és a "szinonimatérképek". Hasonlóképpen, ha csak vektoros tulajdonságokat, például "dimenziókat" vagy "vectorSearchConfiguration" értékeket állít be az alfa-numerikus 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: Vektoros és nem vektoros mezőket tartalmazó mezőgyűjtemények

A vektorkeresé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 vektoros és nem aktoros 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 megadó szövegmezőkkel kell rendelkeznie.

{
    "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: Egyszerű és összetett mezőket tartalmazó indexséma

Az első példa egy teljes indexsémát mutat be egyszerű és összetett mezőkkel. Legalább egy sztringmezőnek igaz értékre kell állítania 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ónak "kereshető" és "lekérhető" sztringmezőket kell megadnia (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 Suggestions API-t vagy automatikus kiegészítési API-használó lekérdezési kérelmeken attól függően, hogy egyezést vagy egy 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

elemzők é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 mutatja be. Emellett egy előre definiált normalizálót (standard) és elemzőt (en.microsoft) is bemutat a "HotelName" és a "Description" esetében.

{
  "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ásokban a rendszer figyelmen kívül hagyja ezt a tulajdonságot, 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 forrásközi kérést. Ha engedélyezni szeretné a forrásközi lekérdezéseket az indexben, engedélyezze a CORS (Forrásközi erőforrás-megosztás (Wikipedia)) használatát 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.

{
   "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: Hozzáférési hitelesítő adatokkal rendelkező titkosítási kulcsok

A titkosítási kulcsok az ügyfél által felügyelt 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 Vaultban 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. Ha a keresési szolgáltatás rendszeradentitása rendelkezik engedélyekkel az Azure Key Vaultban, 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ó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ó: Pontozási profilok hozzáadása keresési indexhez (Azure AI Search REST API) a részletekért.

{
   "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éskor. 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"
             }
           ]
         }
       }
     ]
   }
}

Meghatározások

Láncszem Leírás
corsOptions Felsorolja az indexnek adott tartományokat vagy forrásokat.
defaultScoringProfile Az alapértelmezett pontozási viselkedést felülíró egyéni pontozási profil neve.
encryptionKey Konfigurál egy kapcsolatot az Azure Key Vaulttal az ü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 megkülönbözteti a kis- és nagybetűket, és szűri a kimenetet.
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 Belső előtagtárolót konfigurál részleges lekérdezések, például automatikus kiegészítés és 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 forrásközi kérést. Ha engedélyezni szeretné a forrásközi lekérdezéseket az indexhez, 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
engedélyezettOrigins Szükséges. Az indexhez hozzáférést kapó források vesszővel tagolt listája, ahol az egyes források általában a teljes tartománynév protocol://<>:<port> (bár a <port> gyakran kihagyják). Ez azt jelenti, hogy az adott forrásból kiszolgált JavaScript-kódok lekérdezhetők az indexben (feltéve, hogy érvényes API-kulcsot biztosít). Ha engedélyezni szeretné az összes forrás elérését, adja meg a * egyetlen elemként az "allowedOrigins" tömbben. Ez éles környezetben nem ajánlott, de fejlesztési vagy hibakeresési célokra is hasznos lehet.
maxAgeInSeconds Szabadon választható. A böngészők ezt az értéket használják a CORS elővizsgálati válaszok gyorsítótárazási időtartamának (másodpercben) meghatározásához. Ennek nem negatív egész számnak kell lennie. A teljesítmény akkor javul, ha ez az érték nagyobb, de ezeket a nyereségeket ellensúlyozza a CORS-szabályzatmódosítások é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

Szabadon választható. Az indexben definiált egyéni pontozási profil neve. Az alapértelmezett profil akkor lesz meghívva, ha nincs explicit módon megadva egyéni profil a lekérdezési sztringben. További információ: Pontozási profilok hozzáadása keresési indexhez.

encryptionKey

Konfigurál egy kapcsolatot az Azure Key Vaulttal 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ás" és a "hozzáférési hitelesítő adatok" lehetőséget 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 Szükséges. A titkosításhoz használt Azure Key Vault-kulcs neve.
keyVaultKeyVersion Szükséges. Az Azure Key Vault-kulcs verziója.
keyVaultUri Szükséges. 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 Szabadon 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 Vaulthoz).
"applicationSecret" (a megadott Azure AD-alkalmazás hitelesítési kulcsa).
azonosság 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 Vaulthoz való kapcsolatához. A formátum "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

Mezők

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

Attribútum Leírás
név Szükséges. Beállítja a mező nevét, amelynek egyedinek kell lennie az index vagy a szülőmező mezőgyűjteményében.
típus Szükséges. 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 egész számokhoz Edm.Int32. ö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) egy pontosságú lebegőpontos értékeket tartalmaz. Csak vektormezőkhöz használható, és kötelező. A támogatott típusok teljes listáját támogatott adattípusok.
kulcs Szükséges. Állítsa ezt az attribútumot igaz értékre annak meghatározásához, hogy egy mező értékei egyedileg azonosítják az indexben lévő dokumentumokat. A kulcsmező értékeinek maximális hossza 1024 karakter. Minden indexben pontosan egy legfelső szintű mezőt kell kiválasztani kulcsmezőként, és Edm.Stringtípusúnak kell lennie. Az alapértelmezett érték az egyszerű mezők false és az összetett mezők null.

Kulcsmezők segítségével közvetlenül kereshet dokumentumokat, és frissíthet vagy törölhet bizonyos dokumentumokat. A kulcsmezők értékeit kis- és nagybetűk megkülönböztetik a dokumentumok keresésekor vagy indexelésekor. További részletekért lásd dokumentumkeresési és Dokumentumok hozzáadása, frissítése vagy törlése.
visszaszerezhető Azt jelzi, hogy a mező visszaadható-e a keresési eredményben. Állítsa ezt az attribútumot 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 kell lennie a kulcsmezőkhöz, és összetett mezők esetén null kell lennie. Ez az attribútum a meglévő mezőkön módosítható. Az true beolvasható beállítása nem növeli az indextárhelyre vonatkozó követelményeket. Az alapértelmezett érték az egyszerű mezők true és az összetett mezők null.
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ési, például az indexelés során szótörésen megy keresztül. Ha egy kereshető mezőt olyan értékre állít be, mint a "Napos nap", a rendszer belsőleg a "napos" és a "nap" egyedi jogkivonatokra normalizálja azt. Ez lehetővé teszi a kifejezések teljes szöveges keresését. A Edm.String vagy Collection(Edm.String) típusú mezők alapértelmezés szerint kereshetők. Ennek az attribútumnak false kell lennie más nem összevonásos adattípusok egyszerű mezőihez, és összetett mezők esetében null kell lennie.

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 az elvégzett kereséshez. Ha helyet szeretne menteni az indexben, és nincs szüksége olyan mezőre, amely szerepeljen a keresésekben, állítsa a kereshető értéket falseértékre. Részletekért tekintse meg a teljes szöveges keresés működését az Azure AI Search.
szűrhető Azt jelzi, hogy engedélyezi-e a mező hivatkozását $filter lekérdezésekben. A szűrhető sztringek kezelése eltér a kereshetőtől. A szűrhető Edm.String vagy Collection(Edm.String) típusú mezők nem esnek át lexikális elemzésen, így az összehasonlítások csak a pontos egyezésekhez szükségesek. Ha például egy ilyen mező f "Napos nap" értékre állítja, $filter=f eq 'sunny' nem talál egyezést, de $filter=f eq 'Sunny day' igen. Ennek az attribútumnak összetett mezőkhöz null kell lennie. Az alapértelmezett érték az egyszerű mezők true és az összetett mezők null. Az index méretének csökkentése érdekében állítsa ezt az attribútumot úgy, hogy false azon mezőkön, amelyekre nem szűr.
Sortable Azt jelzi, hogy engedélyezi-e a mező hivatkozását $orderby kifejezésekben. 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ű (egyetlen értékkel rendelkezik a szülődokumentum hatókörében).

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 igaz, akár közvetlen szülőmezőről, akár ősmezőről van szó, ez az összetett gyűjtemény. Az összetett mezők nem rendezhetők, és a rendezhető attribútumnak null kell lennie az ilyen mezőkhöz. A rendezhető mezők alapértelmezett értéke true az egyértékű egyszerű mezőkhöz, false a többértékű egyszerű mezőkhöz, az összetett mezőkhöz pedig null.
facetable Azt jelzi, hogy engedélyezi-e a mező hivatkozását az aspektusos lekérdezésekben. A találatok kategóriánkénti számát (például digitális kamerák keresését és a találatok márka, megapixel, ár stb. alapján történő megtekintését) tartalmazó találatok bemutatójában általában használják. Ennek az attribútumnak összetett mezőkhöz null kell lennie. A Edm.GeographyPoint vagy Collection(Edm.GeographyPoint) típusú mezők nem lehetnek facetablek. Az alapértelmezett érték true az összes többi egyszerű mezőhöz. Az index méretének csökkentése érdekében állítsa ezt az attribútumot úgy, hogy false olyan mezőkön, amelyeken nem fog szembesülni.
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 nyelvelemzők, beépített elemzők, valamint egyéni elemzők. Az alapértelmezett érték a standard.lucene. Ez az attribútum csak kereshető mezőkkel használható, és nem állítható össze sem a searchAnalyzer, sem az indexAnalyzer mezővel. Miután kiválasztotta az elemzőt, és a mező létrejött az indexben, a mező nem módosítható. összetett mezőknull kell lennie.
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őt 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é tartozik beépített elemzők és 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őknull kell lennie.
indexAnalyzer Állítsa be ezt a tulajdonságot a searchAnalyzerrel 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őt null értékre, és győződjön meg arról, hogy a SearchAnalyzer értéke engedélyezett. A tulajdonság érvényes értékei közé tartozik beépített elemzők és egyéni elemzők. Ez az attribútum csak kereshető mezőkkel használható. Az indexelemző kiválasztása után a mező nem módosítható. összetett mezőknull kell lennie.
Normalizáló Beállítja a normalizálót a 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 szó szerinti, nem elemzett szövegeken. Ez az attribútum csak olyan Edm.String és Collection(Edm.String) mezők esetén használható, amelyek legalább egy szűrhető, rendezhető vagy facetable értéke igaz. A 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őknull kell lennie. Az előre definiált normalizáló érvényes értékei a következők:

standard– A szöveg kisbetűssé alakítása, majd az asciifolding.
lowercase– A karaktereket kisbetűssé alakítja.
uppercase – A karaktereket nagybetűssé alakítja.
asciifolding – Az egyszerű latin Unicode blokkban nem szereplő karaktereket ASCII-ekvivalenssé alakítja át, ha van ilyen. Például módosítsa az "à" értéket "a"-ra.
elision– Eltávolítja az elision-t a jogkivonatok 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. Szinonimák leképezésének mezőhöz való hozzárendelése biztosítja, hogy a mezőre vonatkozó lekérdezési kifejezések lekérdezési időben ki legyenek bontva a szinonimatérkép szabályaival. Ez az attribútum a meglévő mezőkön módosítható. Összetett mezőkhöz null vagy üres gyűjteménynek kell lennie.
Mezők Almezők listája, ha ez egy Edm.ComplexType vagy Collection(Edm.ComplexType)típusú mező. Egyszerű mezők esetén null vagy üresnek kell lennie. Az almezők használatáról további információt Az Azure AI Search összetett adattípusainak modellezése című témakörben talál.
Méretek Egész szám. 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 esetében például text-embedding-ada-002, a kimeneti dimenziói 1536, így ez lenne az adott vektormezőhöz beállított dimenziók. A dimenziókattribú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" algoritmus konfigurációs nevét adja meg. A mező létrehozása után nem módosíthatja a vectorSearchConfiguration nevet, de az indexben módosíthatja az algoritmuskonfiguráció tulajdonságait. Ez lehetővé teszi az algoritmus típusának és paramétereinek módosítását.

Jegyzet

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ékei egyetlen keresési kifejezésként vannak kezelve, és az Azure AI Searchben egy kifejezés maximális hossza 32 kilobájt. Ha ennél több szöveget kell tárolnia egyetlen sztringmezőben, explicit módon kell beállítania a szűrhető, rendezhető és facetable beállítást, hogy false az indexdefinícióban.

Egy mező kereshető, szűrhető, rendezhető vagy facetable típusúként való beállítása 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 kíván 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ő nem hivatkozható egyetlen lekérdezési kifejezésben sem. Ez olyan mezők esetében hasznos, amelyeket nem használnak lekérdezésekben, de a keresési eredményekben szükségesek.

normalizers

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

Attribútum Leírás
név Szükséges. Felhasználó által definiált egyéni normalizálót meghatározó karakterláncmező.
charFilters Egyéni normalizálóban használatos. Ez lehet egy vagy több elérhető karakterszűrő, egyéni normalizálóban való használatra:
leképezési
pattern_replace
tokenFilters Egyéni normalizálóban használatos. Ez lehet egy vagy több elérhető jogkivonat-döntő, egyéni normalizálóban való használatra:
arabic_normalization

cjk_width
elision
german_normalization
hindi_normalization
indic_normalization
persian_normalization
scandinavian_normalization
scandinavian_folding
sorani_normalization
kisbetűs
nagybetűs

scoringProfiles

A pontozási profilok a teljes szöveges keresésre vonatkoznak. A profil egy indexben van definiálva, és egyéni logikát ad 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 lekérdezéshez kívánt profilt.

Ha egyéni profilt hoz létre, a defaultScoringProfilebeállításával alapértelmezetté teheti. 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 címmezőből, rangsorba helyezett tartalommezőkből és kiemelt kulcsszómezőkből állnak. A három altulajdonsághoz (titleField, prioritizedKeywordsFields és prioritizedContentFields) legalább egy mezőt kell megadni. Bármely Edm.String vagy Collection(Edm.String) típusú mező 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éskor. 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
név Szükséges. A szemantikai konfiguráció neve.
prioritizedFields Szükséges. 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 (titleField, prioritizedKeywordsFields és prioritizedContentFields) közül legalább egyet be kell állítani.
prioritizedFields.titleField Meghatározza a szemantikai rangsoroláshoz, feliratokhoz, kiemelésekhez és válaszokhoz használandó címmezőt. Ha nem szerepel címmező az indexben, hagyja üresen.
prioritizedFields.prioritizedContentFields Meghatározza a szemantikai rangsoroláshoz, feliratokhoz, kiemelésekhez és 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, feliratokhoz, kiemelésekhez és 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. Ezen szolgáltatások esetében beállíthatja, hogy ez a tulajdonság a 2020 júliusában bevezetett BM25 rangsorolási algoritmust használja. Az érvényes értékek közé tartozik a "#Microsoft.Azure.Search.ClassicSimilarity" (az előző alapértelmezett) vagy a "#Microsoft.Azure.Search.BM25Similarity".

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 a teljes szöveges keresés egyetlen rangsorolási algoritmusaként. További információ: Rangsorolási algoritmusok az Azure AI Search.

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
név Szükséges. A javaslattevő neve.
sourceFields Szükséges. Egy vagy több sztringmező, amelynek automatikus kiegészítését vagy a javasolt eredményeket engedélyezi.
searchMode Kötelező, és mindig analyzingInfixMatchingértékre van állítva. Megadja, hogy az egyeztetés a lekérdezési sztring bármely kifejezésén 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őgyűjteményben) meg kell adnia, hogy a mező melyik vektorkeresési algoritmus konfigurációjá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
név Szükséges. Az algoritmus konfigurációjának neve.
fajta A használni kívánt algoritmustípus. Csak a "hnsw" támogatott, amely a Hierarchical Navigable Small World (HNSW) algoritmus.
hnswParameters Szabadon 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 hnsw algoritmusparaméterek testreszabását tartalmazza. Az összes tulajdonság nem kötelező, és az alapértelmezett értékeket használja a rendszer, ha nincs megadva.

Attribútum Leírás
metrikus Húr. A vektorok összehasonlításához használandó hasonlósági metrika. A hnswesetében az engedélyezett értékek a "koszinusz", az "euklideszi" és a "dotProduct". Az alapértelmezett érték a "koszinusz".
m Egész szám. A kétirányú kapcsolatok száma, amelyek minden új elemhez létrejönnek az építés során. Az alapértelmezett érték 4. Az engedélyezett tartomány 4–10. 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 szám. 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–1000.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 szám. A keresési idő alatt használt legközelebbi szomszédokat tartalmazó dinamikus lista mérete. Az alapértelmezett érték 500. Az engedélyezett tartomány 100 és 1000 között lehet. A paraméter növelése javíthatja a keresési eredményeket, de lassítja a lekérdezési teljesítményt.

Mivel efSearch 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: