Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek je rychlý start jazyka C# pro starší klientskou knihovnu Microsoft.Azure.Search (verze 10), která je nyní nahrazena klientskou knihovnou Azure.Search.Documents (verze 11).
Poznámka:
Pokud máte existující nebo doletové vývojové projekty, můžete i nadále používat verzi 10. U nových projektů nebo použití nových funkcí byste ale měli přejít na novou knihovnu.
O tomto rychlém startu
Vytvořte konzolovou aplikaci .NET Core v jazyce C#, která vytváří, načítá a dotazuje index služby Azure Cognitive Search pomocí sady Visual Studio a klientských knihoven Microsoft.Azure.Search.
Tento článek vysvětluje, jak vytvořit aplikaci. Můžete si také stáhnout a spustit úplnou aplikaci.
Poznámka:
Ukázkový kód v tomto článku pro zjednodušení používá synchronní metody sady .NET SDK služby Azure Cognitive Search verze 10. Pro produkční scénáře ale doporučujeme používat asynchronní metody ve vlastních aplikacích, aby byly škálovatelné a responzivní. Můžete například použít CreateAsync místo DeleteAsyncCreate a Delete.
Požadavky
Než začnete, musíte mít následující:
Účet Azure s aktivním předplatným. Vytvořte si bezplatný účet.
Služba Azure Cognitive Search. Vytvořte službu nebo vyhledejte existující službu v rámci vašeho aktuálního předplatného. Pro účely tohoto rychlého startu můžete použít bezplatnou službu.
Visual Studio, libovolná edice Vzorový kód a pokyny byly testovány na bezplatné edici Community.
Získání klíče a adresy URL
Pro činnosti služby je potřeba koncový bod URL a přístupový klíč pro každou žádost. Vyhledávací služba se vytvoří s oběma službami, takže pokud jste do svého předplatného přidali Službu Azure Cognitive Search, získejte potřebné informace pomocí následujícího postupu:
Přihlaste se k webu Azure Portal a na stránce Přehled vyhledávací služby získejte adresu URL. Příkladem koncového bodu může být
https://mydemo.search.windows.net.V Nastavení>Klíče získejte klíč správce s plnými právy ke službě. Existují dva zaměnitelné klíče správce, které jsou k dispozici pro zajištění kontinuity podnikových procesů v případě, že potřebujete jeden převést. Primární nebo sekundární klíč můžete použít u požadavků pro přidávání, úpravy a odstraňování objektů.
Získejte také klíč dotazu. Osvědčeným postupem je vydávat požadavky na dotazy s přístupem jen pro čtení.
Všechny požadavky vyžadují klíč rozhraní API na každém požadavku odeslaném do vaší služby. Když bude platný klíč navazovat vztah důvěryhodnosti na základě jednotlivých požadavků, mezi aplikací, která požadavek odešle, a službou, která ji zpracovává.
Nastavení prostředí
Začněte otevřením sady Visual Studio a vytvořením nového projektu konzolové aplikace, který se dá spustit v .NET Core.
Instalace balíčků NuGet
Balíček Microsoft.Azure.Search se skládá z několika klientských knihoven distribuovaných jako balíčky NuGet.
Pro tento projekt použijte verzi 10 Microsoft.Azure.Search balíčku NuGet a nejnovější Microsoft.Extensions.Configuration.Json balíček NuGet.
VeSprávci balíčků NuGettools> vyberte Spravovat balíčky NuGet pro řešení....
Klikněte na Procházet.
Vyhledejte
Microsoft.Azure.Searcha vyberte verzi 10.Kliknutím na Nainstalovat vpravo přidáte sestavení do projektu a řešení.
Opakujte pro
Microsoft.Extensions.Configuration.Json, výběr verze 2.2.0 nebo novější.
Přidání informací o službě Azure Cognitive Search
V Průzkumníku řešení klikněte pravým tlačítkem na projekt a vyberte Přidat>novou položku... .
V části Přidat novou položku vyhledejte JSON a vraťte seznam typů položek souvisejících s JSON.
Zvolte Soubor JSON, pojmenujte souborappsettings.jsona klikněte na Přidat.
Přidejte soubor do výstupního adresáře. Klikněte pravým tlačítkem na appsettings.json a vyberte Vlastnosti. V okně Kopírovat do výstupního adresáře vyberte Kopírovat, pokud je novější.
Do nového souboru JSON zkopírujte následující KÓD JSON.
{ "SearchServiceName": "<YOUR-SEARCH-SERVICE-NAME>", "SearchServiceAdminApiKey": "<YOUR-ADMIN-API-KEY>", "SearchIndexName": "hotels-quickstart" }Nahraďte název vyhledávací služby (YOUR-SEARCH-SERVICE-NAME) a klíč rozhraní API pro správu (YOUR-ADMIN-API-KEY) platnými hodnotami. Pokud je
https://mydemo.search.windows.netváš koncový bod služby, název služby by byl "mydemo".
Přidat soubory s příponou ".Method" do projektu
Tento krok je nutný k vytvoření smysluplného výstupu v konzole. Při tisku výsledků do okna konzoly musí být jednotlivá pole z objektu Hotel vrácena jako řetězce. Tento krok implementuje ToString() k provedení této úlohy, kterou provedete zkopírováním potřebného kódu do dvou nových souborů.
Přidání dvou prázdných definic tříd do projektu: Address.Methods.cs, Hotel.Methods.cs
V Address.Methods.cs přepište výchozí obsah následujícím kódem , řádky 1–25.
V Hotel.Methods.cs zkopírujte řádky 1–68.
1. Vytvoření indexu
Index hotelů se skládá z jednoduchých a složitých polí, kde jednoduché pole je "HotelName" nebo "Popis" a složitá pole jsou adresa s dílčími poli nebo kolekcí místností. Pokud index obsahuje komplexní typy, izolujte definice komplexních polí v samostatných třídách.
Přidejte do projektu dvě definice prázdných tříd: Address.cs Hotel.cs
V Address.cs přepište výchozí obsah následujícím kódem:
using System; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Newtonsoft.Json; namespace AzureSearchQuickstart { public partial class Address { [IsSearchable] public string StreetAddress { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string City { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string StateProvince { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string PostalCode { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string Country { get; set; } } }V Hotel.cs třída definuje celkovou strukturu indexu, včetně odkazů na třídu adresy.
namespace AzureSearchQuickstart { using System; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Newtonsoft.Json; public partial class Hotel { [System.ComponentModel.DataAnnotations.Key] [IsFilterable] public string HotelId { get; set; } [IsSearchable, IsSortable] public string HotelName { get; set; } [IsSearchable] [Analyzer(AnalyzerName.AsString.EnMicrosoft)] public string Description { get; set; } [IsSearchable] [Analyzer(AnalyzerName.AsString.FrLucene)] [JsonProperty("Description_fr")] public string DescriptionFr { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string Category { get; set; } [IsSearchable, IsFilterable, IsFacetable] public string[] Tags { get; set; } [IsFilterable, IsSortable, IsFacetable] public bool? ParkingIncluded { get; set; } [IsFilterable, IsSortable, IsFacetable] public DateTimeOffset? LastRenovationDate { get; set; } [IsFilterable, IsSortable, IsFacetable] public double? Rating { get; set; } public Address Address { get; set; } } }Atributy v poli určují, jak se používá v aplikaci. Atribut musí být například
IsSearchablepřiřazen ke každému poli, které by mělo být součástí fulltextového vyhledávání.Poznámka:
V sadě .NET SDK musí být pole explicitně přiřazena jako
IsSearchable,IsFilterable,IsSortableaIsFacetable. Toto chování je na rozdíl od rozhraní REST API, které implicitně umožňuje přiřazení na základě datového typu (například jednoduchá řetězcová pole jsou automaticky prohledávatelná).Přesně jedno pole v indexu typu
stringmusí být klíčové pole, které jednoznačně identifikuje každý dokument. V tomto schématu jeHotelIdklíč.V tomto indexu pole popisu používají volitelnou
analyzervlastnost, která je určena, pokud chcete přepsat výchozí standardní analyzátor Lucene. Poledescription_frpoužívá francouzský analyzátor Lucene (FrLucene), protože ukládá francouzský text. Používádescriptionvolitelný analyzátor jazyka Microsoft (EnMicrosoft).V Program.cs vytvořte instanci
SearchServiceClienttřídy pro připojení ke službě pomocí hodnot uložených v konfiguračním souboru aplikace (appsettings.json).SearchServiceClientIndexesmá vlastnost, která poskytuje všechny metody, které potřebujete k vytvoření, výpisu, aktualizaci nebo odstranění indexů služby Azure Cognitive Search.using System; using System.Linq; using System.Threading; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Microsoft.Extensions.Configuration; namespace AzureSearchQuickstart { class Program { // Demonstrates index delete, create, load, and query // Commented-out code is uncommented in later steps static void Main(string[] args) { IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); IConfigurationRoot configuration = builder.Build(); SearchServiceClient serviceClient = CreateSearchServiceClient(configuration); string indexName = configuration["SearchIndexName"]; Console.WriteLine("{0}", "Deleting index...\n"); DeleteIndexIfExists(indexName, serviceClient); Console.WriteLine("{0}", "Creating index...\n"); CreateIndex(indexName, serviceClient); // Uncomment next 3 lines in "2 - Load documents" // ISearchIndexClient indexClient = serviceClient.Indexes.GetClient(indexName); // Console.WriteLine("{0}", "Uploading documents...\n"); // UploadDocuments(indexClient); // Uncomment next 2 lines in "3 - Search an index" // Console.WriteLine("{0}", "Searching index...\n"); // RunQueries(indexClient); Console.WriteLine("{0}", "Complete. Press any key to end application...\n"); Console.ReadKey(); } // Create the search service client private static SearchServiceClient CreateSearchServiceClient(IConfigurationRoot configuration) { string searchServiceName = configuration["SearchServiceName"]; string adminApiKey = configuration["SearchServiceAdminApiKey"]; SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName, new SearchCredentials(adminApiKey)); return serviceClient; } // Delete an existing index to reuse its name private static void DeleteIndexIfExists(string indexName, SearchServiceClient serviceClient) { if (serviceClient.Indexes.Exists(indexName)) { serviceClient.Indexes.Delete(indexName); } } // Create an index whose fields correspond to the properties of the Hotel class. // The Address property of Hotel will be modeled as a complex field. // The properties of the Address class in turn correspond to sub-fields of the Address complex field. // The fields of the index are defined by calling the FieldBuilder.BuildForType() method. private static void CreateIndex(string indexName, SearchServiceClient serviceClient) { var definition = new Microsoft.Azure.Search.Models.Index() { Name = indexName, Fields = FieldBuilder.BuildForType<Hotel>() }; serviceClient.Indexes.Create(definition); } } }Pokud je to možné, sdílejte jednu instanci
SearchServiceClientve své aplikaci, abyste se vyhnuli otevření příliš velkého počtu připojení. Metody tříd jsou bezpečné pro přístup z více vláken, aby umožnily takové sdílení.Třída má několik konstruktorů. Ten, který chcete použít, má název vyhledávací služby a
SearchCredentialsobjekt jako parametry.SearchCredentialsobsahuje váš API klíč.V definici indexu je nejjednodušší způsob, jak vytvořit
Fieldobjekty volánímFieldBuilder.BuildForTypemetody, předání třídy modelu pro parametr typu. Třída modelu má vlastnosti, které se mapují na pole vašeho indexu. Toto mapování umožňuje vytvořit vazbu dokumentů z indexu vyhledávání na instance třídy modelu.Poznámka:
Pokud nechcete používat třídu modelu, můžete index definovat tak, že vytvoříte
Fieldobjekty přímo. Název pole můžete zadat konstruktoru spolu s datovým typem (nebo analyzátorem pro pole řetězců). Můžete také nastavit další vlastnosti, jako jeIsSearchable,IsFilterablea pojmenovat několik.Stisknutím klávesy F5 sestavte aplikaci a vytvořte index.
Pokud se projekt úspěšně sestaví, otevře se okno konzoly a na obrazovku se zapisují zprávy o stavu ohledně mazání a vytváření indexu.
2. Načtení dokumentů
Ve službě Azure Cognitive Search jsou dokumenty datové struktury, které jsou vstupy indexování a výstupy z dotazů. Jak je získáno z externího zdroje dat, vstupy dokumentů můžou být řádky v databázi, objekty blob v úložišti objektů blob nebo dokumenty JSON na disku. V tomto příkladu přebíráme zástupce a vkládáme dokumenty JSON pro čtyři hotely v samotném kódu.
Při nahrávání dokumentů musíte použít IndexBatch objekt. Obsahuje IndexBatch kolekci IndexAction objektů, z nichž každá obsahuje dokument a vlastnost, které službě Azure Cognitive Search říkají, jakou akci provést (nahrání, sloučení, odstranění a mergeOrUpload).
V Program.cs vytvořte pole dokumentů a akcí indexu a pak předejte pole do
IndexBatch. Následující dokumenty odpovídají indexu hotel-quickstart, jak je definováno hotelovými třídami a třídami adres.// Upload documents as a batch private static void UploadDocuments(ISearchIndexClient indexClient) { var actions = new IndexAction<Hotel>[] { IndexAction.Upload( new Hotel() { HotelId = "1", HotelName = "Secret Point Motel", Description = "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", DescriptionFr = "L'hôtel est idéalement situé sur la principale artère commerciale de la ville en plein cœur de New York. A quelques minutes se trouve la place du temps et le centre historique de la ville, ainsi que d'autres lieux d'intérêt qui font de New York l'une des villes les plus attractives et cosmopolites de l'Amérique.", Category = "Boutique", Tags = new[] { "pool", "air conditioning", "concierge" }, ParkingIncluded = false, LastRenovationDate = new DateTimeOffset(1970, 1, 18, 0, 0, 0, TimeSpan.Zero), Rating = 3.6, Address = new Address() { StreetAddress = "677 5th Ave", City = "New York", StateProvince = "NY", PostalCode = "10022", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "2", HotelName = "Twin Dome Motel", Description = "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", DescriptionFr = "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", Category = "Boutique", Tags = new[] { "pool", "free wifi", "concierge" }, ParkingIncluded = false, LastRenovationDate = new DateTimeOffset(1979, 2, 18, 0, 0, 0, TimeSpan.Zero), Rating = 3.60, Address = new Address() { StreetAddress = "140 University Town Center Dr", City = "Sarasota", StateProvince = "FL", PostalCode = "34243", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "3", HotelName = "Triple Landscape Hotel", Description = "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.", DescriptionFr = "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", Category = "Resort and Spa", Tags = new[] { "air conditioning", "bar", "continental breakfast" }, ParkingIncluded = true, LastRenovationDate = new DateTimeOffset(2015, 9, 20, 0, 0, 0, TimeSpan.Zero), Rating = 4.80, Address = new Address() { StreetAddress = "3393 Peachtree Rd", City = "Atlanta", StateProvince = "GA", PostalCode = "30326", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "4", HotelName = "Sublime Cliff Hotel", Description = "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.", DescriptionFr = "Le sublime Cliff Hotel est situé au coeur du centre historique de sublime dans un quartier extrêmement animé et vivant, à courte distance de marche des sites et monuments de la ville et est entouré par l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments. Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.", Category = "Boutique", Tags = new[] { "concierge", "view", "24-hour front desk service" }, ParkingIncluded = true, LastRenovationDate = new DateTimeOffset(1960, 2, 06, 0, 0, 0, TimeSpan.Zero), Rating = 4.6, Address = new Address() { StreetAddress = "7400 San Pedro Ave", City = "San Antonio", StateProvince = "TX", PostalCode = "78216", Country = "USA" } } ), }; var batch = IndexBatch.New(actions); try { indexClient.Documents.Index(batch); } catch (IndexBatchException e) { // When a service is under load, indexing might fail for some documents in the batch. // Depending on your application, you can compensate by delaying and retrying. // For this simple demo, we just log the failed document keys and continue. Console.WriteLine( "Failed to index some of the documents: {0}", String.Join(", ", e.IndexingResults.Where(r => !r.Succeeded).Select(r => r.Key))); } // Wait 2 seconds before starting queries Console.WriteLine("Waiting for indexing...\n"); Thread.Sleep(2000); }Jakmile objekt inicializujete
IndexBatch, můžete ho odeslat do indexu volánímDocuments.IndexobjektuSearchIndexClient.Documentsje vlastnostSearchIndexClient, která poskytuje metody pro přidávání, úpravy, odstraňování nebo dotazování dokumentů v indexu.Kód kolem
try/catchvolání metodyIndexzachytává chyby indexování, ke kterým může dojít, pokud je vaše služba pod velkým zatížením. V produkčním kódu můžete zpozdit a potom zkusit znovu indexovat dokumenty, které selhaly, nebo pokračovat stejně jako v ukázce, nebo to zpracovat jiným způsobem, který splňuje požadavky vaší aplikace na konzistenci dat.Dvousekundové zpoždění kompenzuje indexování, což je asynchronní, aby se všechny dokumenty mohly indexovat před spuštěním dotazů. Kódování ve zpoždění je obvykle nezbytné pouze v ukázkách, testech a ukázkových aplikacích.
V Program.cs, v main, odkomentujte řádky pro "2 – Načíst dokumenty".
// Uncomment next 3 lines in "2 - Load documents" ISearchIndexClient indexClient = serviceClient.Indexes.GetClient(indexName); Console.WriteLine("{0}", "Uploading documents...\n"); UploadDocuments(indexClient);Stisknutím klávesy F5 aplikaci znovu sestavíte.
Pokud se projekt úspěšně sestaví, otevře se okno konzoly, ve kterých se zapisují stavové zprávy, tentokrát se zprávou o nahrání dokumentů. Na stránce Přehled vyhledávací služby v Azure portálu by měl mít index hotels-quickstart nyní 4 dokumenty.
Další informace o zpracování dokumentů najdete v tématu "Jak sada .NET SDK zpracovává dokumenty".
3. Hledání indexu
Výsledky dotazu můžete získat hned po indexování prvního dokumentu, ale skutečné testování indexu by mělo počkat na indexování všech dokumentů.
Tato část přidává dvě funkce: logiku dotazu a výsledky. Pro dotazy použijte metodu Search . Tato metoda přijímá hledaný text i další parametry.
Třída DocumentsSearchResult představuje výsledky.
V Program.cs vytvořte metodu WriteDocuments, která vytiskne výsledky hledání do konzoly.
private static void WriteDocuments(DocumentSearchResult<Hotel> searchResults) { foreach (SearchResult<Hotel> result in searchResults.Results) { Console.WriteLine(result.Document); } Console.WriteLine(); }Vytvořte metodu RunQueries pro spouštění dotazů a vracení výsledků. Výsledky jsou objekty Hotelu. Pomocí vybraného parametru můžete zobrazit jednotlivá pole. Pokud pole není součástí parametru select, jeho odpovídající vlastnost Hotel bude null.
private static void RunQueries(ISearchIndexClient indexClient) { SearchParameters parameters; DocumentSearchResult<Hotel> results; // Query 1 Console.WriteLine("Query 1: Search for term 'Atlanta' with no result trimming"); parameters = new SearchParameters(); results = indexClient.Documents.Search<Hotel>("Atlanta", parameters); WriteDocuments(results); // Query 2 Console.WriteLine("Query 2: Search on the term 'Atlanta', with trimming"); Console.WriteLine("Returning only these fields: HotelName, Tags, Address:\n"); parameters = new SearchParameters() { Select = new[] { "HotelName", "Tags", "Address" }, }; results = indexClient.Documents.Search<Hotel>("Atlanta", parameters); WriteDocuments(results); // Query 3 Console.WriteLine("Query 3: Search for the terms 'restaurant' and 'wifi'"); Console.WriteLine("Return only these fields: HotelName, Description, and Tags:\n"); parameters = new SearchParameters() { Select = new[] { "HotelName", "Description", "Tags" } }; results = indexClient.Documents.Search<Hotel>("restaurant, wifi", parameters); WriteDocuments(results); // Query 4 -filtered query Console.WriteLine("Query 4: Filter on ratings greater than 4"); Console.WriteLine("Returning only these fields: HotelName, Rating:\n"); parameters = new SearchParameters() { Filter = "Rating gt 4", Select = new[] { "HotelName", "Rating" } }; results = indexClient.Documents.Search<Hotel>("*", parameters); WriteDocuments(results); // Query 5 - top 2 results Console.WriteLine("Query 5: Search on term 'boutique'"); Console.WriteLine("Sort by rating in descending order, taking the top two results"); Console.WriteLine("Returning only these fields: HotelId, HotelName, Category, Rating:\n"); parameters = new SearchParameters() { OrderBy = new[] { "Rating desc" }, Select = new[] { "HotelId", "HotelName", "Category", "Rating" }, Top = 2 }; results = indexClient.Documents.Search<Hotel>("boutique", parameters); WriteDocuments(results); }Existují dva způsoby porovnávání termínů v dotazu: fulltextové vyhledávání a filtry. Fulltextový vyhledávací dotaz hledá jeden nebo více termínů v
IsSearchablepolích v indexu. Filtr je logický výraz, který se vyhodnocuje přesIsFilterablepole v indexu. Fulltextové vyhledávání a filtry můžete používat společně nebo samostatně.Hledání i filtry se provádějí pomocí
Documents.Searchmetody. Vyhledávací dotaz lze předat v parametrusearchText, zatímco výraz filtru lze předat veFiltervlastnostiSearchParameterstřídy. Pokud chcete filtrovat bez hledání, stačí"*"předat parametrsearchText. Pokud chcete hledat bez filtrování, ponechteFiltervlastnost nezadanou, nebo vůbec nepředávejteSearchParametersinstanci.V Program.cs, v main, odkomentujte řádky pro "3 – Hledat".
// Uncomment next 2 lines in "3 - Search an index" Console.WriteLine("{0}", "Searching documents...\n"); RunQueries(indexClient);Řešení je teď hotové. Stisknutím klávesy F5 znovu sestavíte aplikaci a spustíte program v plném rozsahu.
Výstup obsahuje stejné zprávy jako předtím s přidáním informací o dotazu a výsledků.
Vyčistěte zdroje
Když pracujete ve vlastním předplatném, je vhodné na konci projektu zjistit, jestli prostředky, které jste vytvořili, stále potřebujete. Prostředky ponechané v provozu mohou způsobit výdaje. Prostředky můžete odstranit jednotlivě nebo odstranit skupinu prostředků a odstranit tak celou sadu prostředků.
Prostředky můžete najít a spravovat na portálu pomocí odkazu Všechny prostředky nebo skupiny prostředků v levém navigačním podokně.
Pokud používáte bezplatnou službu, mějte na paměti, že jste omezeni na tři indexy, indexery a zdroje dat. Jednotlivé položky na portálu můžete odstranit, abyste zůstali pod limitem.
Další kroky
V tomto rychlém startu v jazyce C# jste si prošli řadu úloh, kterými jste vytvořili index, načetli ho s dokumenty a spustili dotazy. V různých fázích jsme vzali zástupce, abychom zjednodušili kód pro čitelnost a porozumění. Pokud jste obeznámeni se základními koncepty, doporučujeme další článek pro zkoumání alternativních přístupů a konceptů, které prohloubí vaše znalosti.
Vzorový kód a index jsou rozšířené verze tohoto. Další ukázka přidá kolekci Rooms, použije různé třídy a akce a podrobněji se podíváme na to, jak funguje zpracování.
Chcete optimalizovat a ušetřit náklady na cloud?