Vytvoření indexu (rozhraní REST API služby Azure AI Search)
Index je primárním způsobem uspořádání a vyhledávání dokumentů ve službě Azure AI Search, podobně jako tabulka uspořádá záznamy v databázi. Každý index má kolekci dokumentů, které odpovídají schématu indexu (názvy polí, datové typy a atributy), ale indexy také určují další konstrukce (návrhy, profily bodování a konfigurace CORS), které definují další chování hledání.
Na žádost můžete použít post nebo PUT. U obou z nich dokument JSON v textu požadavku poskytuje definici objektu.
POST https://[servicename].search.windows.net/indexes?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
Případně můžete použít PUT a zadat název indexu v identifikátoru URI.
PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
Https se vyžaduje pro všechny žádosti o služby. Pokud index neexistuje, vytvoří se. Pokud už existuje, aktualizuje se na novou definici.
Vytvoření indexu vytvoří schéma a metadata. Naplnění indexu je samostatná operace. V tomto kroku můžete použít indexer (viz Operace indexeru, které jsou k dispozici pro podporované zdroje dat) nebo přidat, aktualizovat nebo odstranit dokumenty. Invertované indexy se vygenerují při publikování dokumentů.
Poznámka
Maximální počet indexů, které můžete vytvořit, se liší podle cenové úrovně. Další informace najdete v tématu Limity služeb.
Parametry identifikátoru URI
Parametr | Popis |
---|---|
název služby | Povinná hodnota. Nastavte ho na jedinečný uživatelsky definovaný název vaší vyhledávací služby. |
název indexu | Vyžaduje se u identifikátoru URI, pokud používáte PUT. Název musí mít malá písmena, musí začínat písmenem nebo číslicí, nesmí mít lomítka ani tečky a musí být kratší než 128 znaků. Začátek názvu musí začínat písmenem nebo číslicí, ale zbytek názvu může obsahovat libovolné písmeno, číslo, podtržítka a pomlčky, pokud podtržítka a pomlčky nejsou po sobě jdoucí. |
verze-api | Povinná hodnota. Seznam podporovaných verzí najdete v tématu Verze rozhraní API . |
Hlavičky požadavku
Následující tabulka popisuje požadované a volitelné hlavičky požadavků.
Pole | Description |
---|---|
Typ obsahu | Povinná hodnota. Nastavte tuto možnost na application/json |
api-key | Volitelné, pokud používáte role Azure a v požadavku je k dispozici nosný token, jinak se vyžaduje klíč. Požadavky na vytvoření musí obsahovat hlavičku nastavenou api-key na klíč správce (na rozdíl od klíče dotazu). Podrobnosti najdete v tématu Připojení ke službě Azure AI Search pomocí ověřování pomocí klíče . |
Text požadavku
Tělo požadavku obsahuje definici schématu, která obsahuje seznam datových polí v dokumentech, které budou do tohoto indexu předány.
Následující kód JSON představuje základní reprezentaci hlavních částí definice.
{
"name": (optional on PUT; required on POST) "Name 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.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",
"searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),
"filterable": true (default) | false,
"sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),
"facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),
"key": true | false (default, only Edm.String fields can be keys, enable on one field only),
"retrievable": true (default) | false,
"analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
"searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
"indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
"synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported),
"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.)
}
],
"similarity": (optional) { },
"suggesters": (optional) [ ... ],
"scoringProfiles": (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) { }
}
Požadavek obsahuje následující vlastnosti:
Vlastnost | Popis |
---|---|
name | Povinná hodnota. Název indexu. Název indexu musí obsahovat pouze malá písmena, číslice nebo pomlčky, nesmí začínat ani končit pomlčkami a je omezený na 128 znaků. |
Pole | Povinná hodnota. Kolekce polí, která se budou předávat do tohoto indexu, včetně názvu, datového typu a atributů, které definují povolené akce pro toto pole. Datové typy odpovídají modelu EDM (Entity Data Model). Další informace najdete v části Podporované typy dat. V kolekci musí být jedno pole, které je zadané jako pole s klíčem . Musí se jednat o řetězcové pole. Toto pole představuje jedinečný identifikátor, někdy označovaný jako ID dokumentu, pro každý dokument uložený s indexem. V klíčích dokumentů se rozlišují velká a malá písmena. Například dokument s klíčem "abc" se považuje za odlišný od dokumentu s klíčem "ABC". |
Podobnost | Nepovinný parametr. U služeb vytvořených před 15. červencem 2020 nastavte tuto vlastnost tak, aby používala algoritmus řazení BM25. Mezi platné hodnoty patří "#Microsoft.Azure.Search.ClassicSimilarity" nebo "#Microsoft.Azure.Search.BM25Similarity" . Mezi verze rozhraní API, které tuto vlastnost podporují, patří 2020-06-30 a 2019-05-06-Preview. Další informace najdete v tématu Algoritmy řazení ve službě Azure AI Search. |
navrhovatelé | Nepovinný parametr. Používá se pro automaticky kompilované dotazy nebo navrhované výsledky hledání, jeden na index. Jedná se o datovou strukturu, která ukládá předpony pro párování u částečných dotazů, jako jsou automatické dokončování a návrhy. Skládá se z name polí a s návrhem, která poskytují obsah pro automaticky kompilované dotazy a navrhované výsledky.
searchMode je povinné a vždy nastaveno na analyzingInfixMatching hodnotu . Určuje, že ke shodě dojde u libovolného termínu v řetězci dotazu. |
scoringProfiles | Nepovinný parametr. Používá se pro vlastní hodnocení skóre vyhledávání. Nastavte defaultScoringProfile , aby se jako výchozí používal vlastní profil, který se vyvolá pokaždé, když není v řetězci dotazu zadaný vlastní profil. Další informace o prvcích najdete v tématu Přidání profilů bodování do vyhledávacího indexu a příkladu v další části. |
analyzers, charFilters, tokenizers, tokenFilters | Nepovinný parametr. Pokud definujete vlastní analyzátory, zadejte tyto části indexu. Ve výchozím nastavení mají tyto oddíly hodnotu null. |
defaultScoringProfile | Nepovinný parametr. Název vlastního bodovacího profilu, který přepíše výchozí chování při vyhodnocování. |
corsOptions | Nepovinný parametr. JavaScript na straně klienta nemůže ve výchozím nastavení volat žádná rozhraní API, protože prohlížeč zabrání všem žádostem mezi zdroji. Pokud chcete do indexu povolit dotazy mezi zdroji, povolte CORS (Sdílení prostředků mezi zdroji) nastavením atributu corsOptions. Z bezpečnostních důvodů podporují CORS jenom rozhraní API pro dotazy. Oddíl corsOptions obsahuje:allowedOrigins (Povinné) Seznam zdrojů oddělených čárkami, kterým bude udělen přístup k indexu, kde každý původ má obvykle tvar protocol://<-qualified-domain-name>:<port> (i když <port> je často vynechán). To znamená, že jakýkoli kód JavaScriptu, který je obsluhována z těchto počátků, bude moct dotazovat index (za předpokladu, že poskytuje správnou api-key hodnotu ). Pokud chcete povolit přístup ke všem počátkům, zadejte * v allowedOrigins poli jako jednu položku. To se nedoporučuje pro produkční prostředí, ale může být užitečné pro vývoj nebo ladění.
maxAgeInSeconds (Volitelné) Prohlížeče tuto hodnotu používají k určení doby trvání (v sekundách) pro ukládání předběžných odpovědí CORS do mezipaměti. Musí se jednat o nezáporné celé číslo. Čím větší je tato hodnota, tím lepší bude výkon, ale tím déle bude trvat, než se změny zásad CORS projeví. Pokud není nastavená, použije se výchozí doba trvání 5 minut. |
šifrovací klíč | Nepovinný parametr. Používá se k šifrování mapy synonym s vlastními klíči, které se spravují v Azure Key Vault. K dispozici pro fakturovatelné vyhledávací služby vytvořené 1. 1. 2019 nebo později.
Oddíl encryptionKey obsahuje uživatelem definovaný keyVaultKeyName (povinné), systémově vygenerovaný keyVaultKeyVersion (povinné) a keyVaultUri zadaný klíč (povinný, označovaný také jako název DNS). Příkladem identifikátoru URI může být "https://my-keyvault-name.vault.azure.net".
Volitelně můžete určit accessCredentials , jestli nepoužíváte identitu spravovaného systému.
accessCredentials Vlastnosti zahrnují applicationId (Microsoft Entra ID ID aplikace, kterému byla udělena přístupová oprávnění k zadanému Key Vault Azure) a applicationSecret (ověřovací klíč registrované aplikace). Příklad v další části znázorňuje syntaxi. |
Definice polí
Při vytváření indexu je možné u pole nastavit následující atributy.
Atribut | Popis |
---|---|
name | Povinná hodnota. Nastaví název pole, který musí být jedinečný v kolekci polí indexu nebo nadřazeného pole. |
typ | Povinná hodnota. Nastaví datový typ pole. Pole můžou být jednoduchá nebo složitá. Jednoduchá pole jsou primitivních typů, například Edm.String pro text nebo Edm.Int32 celá čísla.
Složitá pole můžou mít dílčí pole, která jsou sama o sobě jednoduchá nebo složitá. To vám umožní modelovat objekty a pole objektů, což zase umožňuje nahrát do indexu většinu struktur objektů JSON. Úplný seznam podporovaných typů najdete v tématu Podporované datové typy (Azure AI Search ). |
key | Povinná hodnota. Nastavte tento atribut na true, abyste určili, že hodnoty pole jednoznačně identifikují dokumenty v indexu. Maximální délka hodnot v poli klíče je 1024 znaků. Jako klíčové pole musí být zvoleno přesně jedno pole nejvyšší úrovně v každém indexu a musí být typu Edm.String . Výchozí hodnota je false pro jednoduchá pole a null pro složitá pole.
Klíčová pole se dají použít k přímému vyhledávání dokumentů a aktualizaci nebo odstranění konkrétních dokumentů. Při vyhledávání nebo indexování dokumentů se hodnoty polí s klíči zpracovávají způsobem, který rozlišuje velká a malá písmena. Podrobnosti najdete v tématech Dokument vyhledávání (rozhraní REST API služby Azure AI Search) a Přidání, aktualizace nebo odstranění dokumentů (rozhraní REST API služby Azure AI Search). |
možnost načtení | Určuje, zda lze pole vrátit ve výsledku hledání. Tento atribut nastavte na, false pokud chcete použít pole (například okraj) jako filtr, řazení nebo bodovací mechanismus, ale nechcete, aby bylo pole viditelné pro koncového uživatele. Tento atribut musí být true pro klíčová pole a musí být null pro složitá pole. Tento atribut lze změnit u existujících polí. Nastavení pro načtení na true nezpůsobí zvýšení požadavků na úložiště indexů. Výchozí hodnota je true pro jednoduchá pole a null pro složitá pole. |
Prohledávatelné | Označuje, jestli je pole fulltextové prohledávatelné a zda lze na pole odkazovat ve vyhledávacích dotazech. To znamená, že během indexování projde lexikální analýzou , jako je dělení slov. Pokud nastavíte prohledávatelné pole na hodnotu jako "Slunečný den", interně se normalizuje a rozdělí na jednotlivé tokeny "sunny" a "day". To umožňuje fulltextové vyhledávání těchto termínů. Pole typu Edm.String nebo Collection(Edm.String) jsou ve výchozím nastavení prohledávatelná. Tento atribut musí být false pro jednoduchá pole jiných než řetězcových datových typů a musí být null pro složitá pole.
Prohledávatelné pole spotřebovává v indexu více místa, protože Azure AI Search bude zpracovávat obsah těchto polí a uspořádat je do pomocných datových struktur pro výkonné vyhledávání. Pokud chcete ušetřit místo v indexu a nepotřebujete, aby se pole zahrnulo do hledání, nastavte prohledávatelné na false hodnotu . Podrobnosti najdete v tématu Jak funguje fulltextové vyhledávání ve službě Azure AI Search . |
Filtrovatelné | Určuje, zda se má povolit odkaz na pole v $filter dotazech. Filtrovatelné se liší od prohledávatelného způsobu zpracování řetězců. Pole typu Edm.String nebo Collection(Edm.String) pole, která lze filtrovat, neprocházejí lexikální analýzou, takže porovnání jsou určena pouze pro přesné shody. Pokud například nastavíte takové pole f na "Slunečný den", $filter=f eq 'sunny' nenajde žádné shody, ale $filter=f eq 'Sunny day' bude. Tento atribut musí být null pro složitá pole. Výchozí hodnota je true pro jednoduchá pole a null pro složitá pole. Pokud chcete zmenšit velikost indexu, nastavte tento atribut na false pole, která nebudete filtrovat. |
Sortable | Určuje, zda má být na pole odkazováno ve $orderby výrazech. Azure AI Search ve výchozím nastavení seřadí výsledky podle skóre, ale v mnoha prostředích budou uživatelé chtít řadit podle polí v dokumentech. Jednoduché pole lze seřadit pouze v případě, že je jednohodnotové (v oboru nadřazeného dokumentu má jednu hodnotu).
Jednoduchá pole kolekce nelze seřadit, protože mají více hodnot. Jednoduchá dílčí pole složitých kolekcí jsou také vícehodnotová, a proto je nelze seřadit. To platí bez ohledu na to, jestli se jedná o bezprostředně nadřazené pole nebo nadřazené pole, což je složitá kolekce. Složitá pole nelze seřadit a atribut řazení musí být null pro taková pole. Výchozí možnost řazení je true pro jednoduchá pole s jednou hodnotou, false pro jednoduchá pole s více hodnotami a null pro složitá pole. |
facetable | Určuje, jestli se má povolit odkaz na pole ve fasetových dotazech. Obvykle se používá v prezentaci výsledků hledání, která zahrnuje počet přístupů podle kategorie (například hledání digitálních fotoaparátů a zobrazení hitů podle značky, podle megapixelů, podle ceny atd.). Tento atribut musí být null pro složitá pole. Pole typu Edm.GeographyPoint nebo Collection(Edm.GeographyPoint) nelze použít jako facetable. Výchozí hodnota je true pro všechna ostatní jednoduchá pole. Pokud chcete zmenšit velikost indexu, nastavte tento atribut na false pole, u kterého nebudete mít omezující vlastnosti. |
Analyzer | Nastaví lexikální analyzátor pro tokenizaci řetězců během operací indexování a dotazování. Platné hodnoty pro tuto vlastnost zahrnují analyzátory jazyka, předdefinované analyzátory a vlastní analyzátory. Výchozí formát je standard.lucene . Tento atribut lze použít pouze s prohledávatelnými řetězcovými poli a nelze ho nastavit společně s searchAnalyzerem ani indexAnalyzerem. Jakmile je analyzátor vybrán a pole se vytvoří v indexu, nelze ho pro pole změnit. Musí být null pro složitá pole. |
searchAnalyzer | Nastavte tuto vlastnost ve spojení s indexAnalyzer a určete různé lexikální analyzátory pro indexování a dotazy. Pokud použijete tuto vlastnost, nastavte analyzátor na null a ujistěte se, že indexAnalyzer je nastavená na povolenou hodnotu. Platné hodnoty této vlastnosti zahrnují předdefinované analyzátory a vlastní analyzátory. Tento atribut lze použít pouze s prohledávatelnými poli. Analyzátor vyhledávání je možné aktualizovat u existujícího pole, protože se používá jenom v době dotazu. Musí být null pro složitá pole. |
indexAnalyzer | Nastavte tuto vlastnost ve spojení s searchAnalyzer a určete různé lexikální analyzátory pro indexování a dotazy. Pokud použijete tuto vlastnost, nastavte analyzer na null a ujistěte se, že searchAnalyzer je nastavená na povolenou hodnotu. Platné hodnoty této vlastnosti zahrnují předdefinované analyzátory a vlastní analyzátory. Tento atribut lze použít pouze s prohledávatelnými poli. Jakmile je analyzátor indexu vybraný, nelze ho pro pole změnit. Musí být null pro složitá pole. |
synonymMaps | Seznam názvů map synonym, které chcete přidružit k tomuto poli. Tento atribut lze použít pouze s prohledávatelnými poli. V současné době je podporováno pouze jedno mapování synonym pro každé pole. Přiřazení mapování synonym k poli zajistí, že termíny dotazu, které cílí na toto pole, se v době dotazu rozbalí pomocí pravidel v mapě synonym. Tento atribut lze změnit u existujících polí. Pro složitá pole musí být null kolekce nebo prázdná. |
fields | Seznam dílčích polí, pokud se jedná o pole typu Edm.ComplexType nebo Collection(Edm.ComplexType) . Pro jednoduchá pole musí být null nebo prázdná. Další informace o tom, jak a kdy používat dílčí pole, najdete v tématu Modelování složitých datových typů ve službě Azure AI Search . |
Poznámka
Pole typu Edm.String
, která jsou filtrovatelná, řaditelná nebo kategorizovatelná, můžou mít délku maximálně 32 kilobajtů. Důvodem je to, že hodnoty takových polí se považují za jeden hledaný termín a maximální délka termínu ve službě Azure AI Search je 32 kilobajtů. Pokud potřebujete do pole s jedním řetězcem uložit více textu, budete muset v definici indexu explicitně nastavit filtrovatelné, seřaditelné a facetable false
.
Nastavení pole jako prohledávatelného, filtrovatelného, seřaditelného nebo facetable má vliv na velikost indexu a výkon dotazů. Nenastavujte tyto atributy u polí, na která nemají výrazy dotazu odkazovat.
Pokud pole není nastavené tak, aby bylo prohledávatelné, filtrovatelné, seřaditelné nebo kategorizovatelné, nelze na pole odkazovat v žádném výrazu dotazu. To je užitečné pro pole, která se nepoužívají v dotazech, ale jsou potřebná ve výsledcích hledání.
Poznámka
Maximální počet indexů, které můžete vytvořit, se liší podle cenové úrovně. Další informace najdete v tématu Limity služby.
Odpověď
V případě úspěšného požadavku by se měl zobrazit stavový kód 201 Vytvořeno.
Ve výchozím nastavení tělo odpovědi obsahuje JSON pro definici indexu. Pokud je ale hlavička Prefer
požadavku nastavená na return=minimal
, text odpovědi je prázdný a stavový kód úspěchu je "204 – Žádný obsah" místo "201 Vytvořeno". To platí bez ohledu na to, jestli se k vytvoření indexu používá PUT nebo POST.
Příklady
Příklad: Schéma indexu
{
"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" },
{ "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 },
{ "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" }
]
}
],
"suggesters": [
{ "name": "sg", "searchMode": "analyzingInfixMatching", "sourceFields": ["HotelName"] }
],
"analyzers": [
{
"@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
"name": "tagsAnalyzer",
"charFilters": [ "html_strip" ],
"tokenizer": "standard_v2"
}
]
}
Příklad: Navrhovatelé
"suggesters": [
{
"name": "name of suggester",
"searchMode": "analyzingInfixMatching",
"sourceFields": ["field1", "field2", ...]
}
]
Na navrhovatele se u žádostí dotazů, které obsahují rozhraní API pro návrhy , nebo rozhraní API automatického dokončování odkazuje název, podle toho, jestli chcete vrátit shodu nebo zbytek termínu dotazu. Další informace o vytváření a používání navrhovatele najdete v tématu Vytvoření navrhovatele.
Příklad: Podobnost pro relevanci hledání
Tato vlastnost nastaví algoritmus řazení, který se používá k vytvoření skóre relevance ve výsledcích hledání fulltextového vyhledávacího dotazu. Ve službách vytvořených po 15. červenci 2020 se tato vlastnost ignoruje, protože algoritmus podobnosti je vždy BM25. U existujících služeb vytvořených před 15. červencem 2020 se můžete přihlásit k BM25 nastavením tohoto konstruktoru následujícím způsobem:
"similarity": {
"@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
}
Příklad: Možnosti CORS
JavaScript na straně klienta nemůže ve výchozím nastavení volat žádná rozhraní API, protože prohlížeč zabrání všem požadavkům z více zdrojů. Pokud chcete povolit dotazy z více zdrojů do indexu, povolte CORS (Sdílení prostředků mezi zdroji (Wikipedie)) nastavením atributu corsOptions
. Z bezpečnostních důvodů podporují CORS pouze rozhraní API pro dotazy.
{
"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říklad: Šifrovací klíče
Šifrovací klíče jsou klíče spravované zákazníkem, které se používají k dalšímu šifrování. Další informace najdete v tématu Šifrování pomocí klíčů spravovaných zákazníkem v 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říklad: Profily bodování
Profil bodování je část schématu, která definuje vlastní chování při vyhodnocování, které vám umožní ovlivnit, které dokumenty se ve výsledcích hledání zobrazí výše. Profily bodování se skládají z vah polí a funkcí. Pokud je chcete použít, zadejte profil podle názvu v řetězci dotazu. Další informace najdete v tématu Přidání profilů hodnocení do vyhledávacího indexu , kde najdete podrobnosti.
{
"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říklad: Mapy synonym
Po vytvoření mapy synonym ve vyhledávací službě ji můžete přiřadit k searchable
polím typu Edm.String
nebo Collection(Edm.String)
v indexu. Definice indexu níže nakonfiguruje pole "žánr" tak, aby používalo mapu synonym mysynonymmap.
Tuto vlastnost můžete přidat do existujícího pole pomocí indexu aktualizace . Vlastnost synonymMaps
pole určuje mapování (jedno pro každé pole). Vlastnosti existujících polí můžete kdykoli aktualizovat synonymMaps
.
Dotazování jako obvykle pomocí termínů nebo frází (uzavřených v uvozovkách) Ve službě Azure AI Search musí být dvoudílné termíny, například "vířivka", vyjádřeny jako fráze, jinak se každý termín vyhodnocuje nezávisle. Pokud zadáte dotaz na "vířivka", vyhledávací web vyhledá tuto frázi i všechna synonyma, která jste definovali, například jacuzzi.
POST /indexes?api-version=2020-06-30
{
"name":"myindex",
"fields":[
...
{
"name":"genre",
"type":"Edm.String",
"searchable":true,
"analyzer":"en.lucene",
"synonymMaps": [
"mysynonymmap"
]
}
]
...
}