Rövid útmutató: Teljes szöveges keresés az Azure SDK-k használatával

Megtudhatja, hogyan használhatja az Azure.Search.Documents ügyfélkódtárat egy Azure SDK-ban keresési index létrehozására, betöltésére és lekérdezésére a teljes szöveges keresés mintaadataival. A teljes szöveges keresés az Apache Lucene-t használja az indexeléshez és a lekérdezésekhez, valamint egy BM25 rangsorolási algoritmust a pontozási eredményekhez.

Ez a rövid útmutató a következő SDK-k lépéseit tartalmazza:

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.

  • Azure AI-Search szolgáltatás. Ha nincs ilyen szolgáltatása, hozzon létre egy szolgáltatást . Ehhez a rövid útmutatóhoz ingyenes szintet használhat.

  • EGY API-kulcs és szolgáltatásvégpont. Jelentkezzen be az Azure Portalra , és keresse meg a keresési szolgáltatást.

    Az Áttekintésben másolja ki az URL-címet, és mentse a Jegyzettömb egy későbbi lépéshez. A végpontok például a következőképpen nézhetnek ki: https://mydemo.search.windows.net.

    A Kulcsok területen másolja és mentse a rendszergazdai kulcsot az objektumok létrehozásához és törléséhez szükséges teljes jogosultságok érdekében. Két felcserélhető elsődleges és másodlagos kulcs van. Válasszon egyet.

    HTTP-végpont és hozzáférési kulcs lekérése

Index létrehozása, betöltése és lekérdezése

Válasszon egy programozási nyelvet a következő lépéshez. Az Azure.Search.Documents ügyfélkódtárak az Azure SDK-kban érhetők el .NET, Python, Java és JavaScript nyelven.

Hozzon létre egy konzolalkalmazást az Azure.Search.Documents ügyfélkódtár használatával a keresési indexek létrehozásához, betöltéséhez és lekérdezéséhez. Másik lehetőségként letöltheti a forráskódot, hogy egy kész projekttel kezdjen, vagy kövesse az alábbi lépéseket a saját létrehozásához.

Saját környezet beállítása

  1. Indítsa el a Visual Studiót, és hozzon létre egy új projektet egy konzolalkalmazáshoz.

  2. A NuGet-Csomagkezelő eszközökben >válassza a Megoldáshoz készült NuGet-csomagok kezelése... lehetőséget.

  3. Válassza a Tallózás lehetőséget.

  4. Keressen rá az Azure.Search.Documents csomagra, és válassza a 11.0-s vagy újabb verziót.

  5. Válassza a Jobb oldali Telepítés lehetőséget a szerelvény projekthez és megoldáshoz való hozzáadásához.

Keresési ügyfél létrehozása

  1. A Program.cs módosítsa a névteret AzureSearch.SDK.Quickstart.v11 a következőre, majd adja hozzá a következő using irányelveket.

    using Azure;
    using Azure.Search.Documents;
    using Azure.Search.Documents.Indexes;
    using Azure.Search.Documents.Indexes.Models;
    using Azure.Search.Documents.Models;
    
  2. Hozzon létre két ügyfelet: a SearchIndexClient létrehozza az indexet, a SearchClient pedig betölt és lekérdez egy meglévő indexet. Mindkettőnek szüksége van a szolgáltatásvégpontra és egy rendszergazdai API-kulcsra a létrehozási/törlési jogosultságokkal való hitelesítéshez.

    Mivel a kód létrehozza az URI-t, csak a keresési szolgáltatás nevét adja meg a "serviceName" tulajdonságban.

     static void Main(string[] args)
     {
         string serviceName = "<your-search-service-name>";
         string apiKey = "<your-search-service-admin-api-key>";
         string indexName = "hotels-quickstart";
    
         // Create a SearchIndexClient to send create/delete index commands
         Uri serviceEndpoint = new Uri($"https://{serviceName}.search.windows.net/");
         AzureKeyCredential credential = new AzureKeyCredential(apiKey);
         SearchIndexClient adminClient = new SearchIndexClient(serviceEndpoint, credential);
    
         // Create a SearchClient to load and query documents
         SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, credential);
         . . . 
     }
    

Index létrehozása

Ez a rövid útmutató létrehoz egy hotelindexet, amelyet betölt a szálloda adataival, és lekérdezéseket hajt végre. Ebben a lépésben határozza meg az index mezőit. Minden meződefiníció tartalmaz egy nevet, adattípust és attribútumot, amely meghatározza a mező használatát.

Ebben a példában az Azure.Search.Documents kódtár szinkron metódusait használjuk az egyszerűség és az olvashatóság érdekében. Éles forgatókönyvek esetén azonban aszinkron módszereket kell használnia az alkalmazás skálázható és rugalmas állapotának megőrzéséhez. Például a CreateIndexAsyncet használná a CreateIndex helyett.

  1. Üres osztálydefiníció hozzáadása a projekthez: Hotel.cs

  2. Másolja a következő kódot a Hotel.cs egy szállodai dokumentum szerkezetének meghatározásához. A mező attribútumai határozzák meg, hogyan használják azt egy alkalmazásban. Az attribútumot például minden olyan mezőhöz hozzá kell rendelni, IsFilterable amely egy szűrőkifejezést támogat.

    using System;
    using System.Text.Json.Serialization;
    using Azure.Search.Documents.Indexes;
    using Azure.Search.Documents.Indexes.Models;
    
    namespace AzureSearch.Quickstart
    {
        public partial class Hotel
        {
            [SimpleField(IsKey = true, IsFilterable = true)]
            public string HotelId { get; set; }
    
            [SearchableField(IsSortable = true)]
            public string HotelName { get; set; }
    
            [SearchableField(AnalyzerName = LexicalAnalyzerName.Values.EnLucene)]
            public string Description { get; set; }
    
            [SearchableField(AnalyzerName = LexicalAnalyzerName.Values.FrLucene)]
            [JsonPropertyName("Description_fr")]
            public string DescriptionFr { get; set; }
    
            [SearchableField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
            public string Category { get; set; }
    
            [SearchableField(IsFilterable = true, IsFacetable = true)]
            public string[] Tags { get; set; }
    
            [SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
            public bool? ParkingIncluded { get; set; }
    
            [SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
            public DateTimeOffset? LastRenovationDate { get; set; }
    
            [SimpleField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
            public double? Rating { get; set; }
    
            [SearchableField]
            public Address Address { get; set; }
        }
    }
    

    Az Azure.Search.Documents ügyfélkódtárban a SearchableField és a SimpleField használatával egyszerűsítheti a meződefiníciókat. Mindkettő a SearchField származéka, és potenciálisan egyszerűsítheti a kódot:

    • SimpleField bármilyen adattípus lehet, mindig nem kereshető (a teljes szöveges keresési lekérdezések figyelmen kívül hagyják), és lekérdezhető (nem rejtett). Más attribútumok alapértelmezés szerint ki vannak kapcsolva, de engedélyezhetők. Használhat SimpleField dokumentumazonosítókat vagy mezőket, amelyeket csak szűrőkben, aspektusokban vagy pontozási profilokban használ. Ha igen, mindenképpen alkalmazza a forgatókönyvhöz szükséges attribútumokat, például IsKey = true egy dokumentumazonosítót. További információ: SimpleFieldAttribute.cs a forráskódban.

    • SearchableField sztringnek kell lennie, és mindig kereshető és lekérdezhető. Más attribútumok alapértelmezés szerint ki vannak kapcsolva, de engedélyezhetők. Mivel ez a mezőtípus kereshető, támogatja a szinonimákat és az elemző tulajdonságainak teljes kiegészítését. További információ: SearchableFieldAttribute.cs a forráskódban.

    Akár az alapszintű SearchField API-t, akár az egyik segédmodellt használja, explicit módon engedélyeznie kell a szűrési, aspektus- és rendezési attribútumokat. Az IsFilterable, az IsSortable és az IsFacetable attribútumot például explicit módon kell hozzárendelni, ahogyan az a fenti példában is látható.

  3. Adjon hozzá egy második üres osztálydefiníciót a projekthez: Address.cs. Másolja a következő kódot az osztályba.

    using Azure.Search.Documents.Indexes;
    
     namespace AzureSearch.Quickstart
     {
         public partial class Address
         {
             [SearchableField(IsFilterable = true)]
             public string StreetAddress { get; set; }
    
             [SearchableField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
             public string City { get; set; }
    
             [SearchableField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
             public string StateProvince { get; set; }
    
             [SearchableField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
             public string PostalCode { get; set; }
    
             [SearchableField(IsFilterable = true, IsSortable = true, IsFacetable = true)]
             public string Country { get; set; }
         }
     }
    
  4. Hozzon létre még két osztályt: Hotel.Methods.cs és Address.Methods.cs ToString() felülbírálásokhoz. Ezek az osztályok a keresési eredmények megjelenítésére szolgálnak a konzol kimenetében. Ezeknek az osztályoknak a tartalmát ebben a cikkben nem találja meg, de a kódot a GitHub fájljaiból másolhatja.

  5. A Program.cs hozzon létre egy SearchIndex-objektumot , majd hívja meg a CreateIndex metódust az index kifejezéséhez a keresési szolgáltatásban. Az index tartalmaz egy SearchSuggestert is, amely engedélyezi az automatikus kiegészítést a megadott mezőkön.

     // Create hotels-quickstart index
     private static void CreateIndex(string indexName, SearchIndexClient adminClient)
     {
         FieldBuilder fieldBuilder = new FieldBuilder();
         var searchFields = fieldBuilder.Build(typeof(Hotel));
    
         var definition = new SearchIndex(indexName, searchFields);
    
         var suggester = new SearchSuggester("sg", new[] { "HotelName", "Category", "Address/City", "Address/StateProvince" });
         definition.Suggesters.Add(suggester);
    
         adminClient.CreateOrUpdateIndex(definition);
     }
    

Dokumentumok betöltése

Az Azure AI Search a szolgáltatásban tárolt tartalmakon keres. Ebben a lépésben olyan JSON-dokumentumokat fog betölteni, amelyek megfelelnek az imént létrehozott szállodaindexnek.

Az Azure AI Searchben a keresési dokumentumok olyan adatstruktúrák, amelyek egyaránt bemenetek az indexeléshez és a lekérdezésekből származó kimenetekhez. A külső adatforrásból származó dokumentumbemenetek lehetnek egy adatbázis sorai, blobok a Blob Storage-ban vagy a lemezen lévő JSON-dokumentumok. Ebben a példában egy parancsikont hozunk létre, és négy szállodához ágyazunk be JSON-dokumentumokat magában a kódban.

Dokumentumok feltöltésekor IndexDocumentsBatch objektumot kell használnia. Az IndexDocumentsBatch objektumok műveletek gyűjteményét tartalmazzák, amelyek mindegyike tartalmaz egy dokumentumot és egy tulajdonságot, amely közli az Azure AI Search szolgáltatással, hogy milyen műveletet kell végrehajtania (feltöltés, egyesítés, törlés és mergeOrUpload).

  1. A Program.cs hozzon létre egy dokumentum- és indexműveleteket tartalmazó tömböt, majd adja át a tömböt a következőnek IndexDocumentsBatch: . Az alábbi dokumentumok megfelelnek a hotelosztály által meghatározott, a hotels-quickstart indexnek.

    // Upload documents in a single Upload request.
    private static void UploadDocuments(SearchClient searchClient)
    {
        IndexDocumentsBatch<Hotel> batch = IndexDocumentsBatch.Create(
            IndexDocumentsAction.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"
                    }
                }),
            IndexDocumentsAction.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"
                    }
                }),
            IndexDocumentsAction.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"
                    }
                }),
            IndexDocumentsAction.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.60,
                    Address = new Address()
                    {
                        StreetAddress = "7400 San Pedro Ave",
                        City = "San Antonio",
                        StateProvince = "TX",
                        PostalCode = "78216",
                        Country = "USA"
                    }
                })
            );
    
        try
        {
            IndexDocumentsResult result = searchClient.IndexDocuments(batch);
        }
        catch (Exception)
        {
            // If for some reason any documents are dropped during indexing, you can compensate by delaying and
            // retrying. This simple demo just logs the failed document keys and continues.
            Console.WriteLine("Failed to index some of the documents: {0}");
        }
    }
    

    Az IndexDocumentsBatch objektum inicializálása után elküldheti azt az indexbe a SearchClient objektum IndexDocuments meghívásával.

  2. Adja hozzá a következő sorokat a Main() hez. A dokumentumok betöltése a SearchClient használatával történik, de a művelethez rendszergazdai jogosultságok is szükségesek a szolgáltatáson, amely általában a SearchIndexClienthez van társítva. A művelet beállításának egyik módja a SearchClient lekérése a SearchIndexClienten keresztül (ebben a példában az adminClient).

     SearchClient ingesterClient = adminClient.GetSearchClient(indexName);
    
     // Load documents
     Console.WriteLine("{0}", "Uploading documents...\n");
     UploadDocuments(ingesterClient);
    
  3. Mivel ez egy konzolalkalmazás, amely az összes parancsot egymás után futtatja, adjon hozzá 2 másodperces várakozási időt az indexelés és a lekérdezések között.

    // Wait 2 seconds for indexing to complete before starting queries (for demo and console-app purposes only)
    Console.WriteLine("Waiting for indexing...\n");
    System.Threading.Thread.Sleep(2000);
    

    A 2 másodperces késleltetés kompenzálja az indexelést, amely aszinkron, így az összes dokumentum indexelhető a lekérdezések végrehajtása előtt. A késésben történő kódolás általában csak demókban, tesztekben és mintaalkalmazásokban szükséges.

Keresés az indexekben

Az első dokumentum indexelése után azonnal lekérheti a lekérdezési eredményeket, de az index tényleges tesztelésének várnia kell, amíg az összes dokumentum indexel.

Ez a szakasz két funkciót ad hozzá: lekérdezési logikát és eredményeket. Lekérdezésekhez használja a Keresés metódust. Ez a metódus a keresési szöveget (a lekérdezési sztringet) és más beállításokat használja.

A SearchResults osztály az eredményeket jelöli.

  1. A Program.cs hozzon létre egy WriteDocuments metódust, amely kinyomtatja a keresési eredményeket a konzolon.

    // Write search results to console
    private static void WriteDocuments(SearchResults<Hotel> searchResults)
    {
        foreach (SearchResult<Hotel> result in searchResults.GetResults())
        {
            Console.WriteLine(result.Document);
        }
    
        Console.WriteLine();
    }
    
    private static void WriteDocuments(AutocompleteResults autoResults)
    {
        foreach (AutocompleteItem result in autoResults.Results)
        {
            Console.WriteLine(result.Text);
        }
    
        Console.WriteLine();
    }
    
  2. Hozzon létre egy RunQueries metódust a lekérdezések végrehajtásához és az eredmények visszaadásához. Az eredmények hotelobjektumok. Ez a minta a metódus aláírását és az első lekérdezést mutatja be. Ez a lekérdezés bemutatja a Select paramétert, amely lehetővé teszi az eredmény megírását a dokumentum kijelölt mezőivel.

    // Run queries, use WriteDocuments to print output
    private static void RunQueries(SearchClient srchclient)
    {
        SearchOptions options;
        SearchResults<Hotel> response;
    
        // Query 1
        Console.WriteLine("Query #1: Search on empty term '*' to return all documents, showing a subset of fields...\n");
    
        options = new SearchOptions()
        {
            IncludeTotalCount = true,
            Filter = "",
            OrderBy = { "" }
        };
    
        options.Select.Add("HotelId");
        options.Select.Add("HotelName");
        options.Select.Add("Address/City");
    
        response = srchclient.Search<Hotel>("*", options);
        WriteDocuments(response);
    
  3. A második lekérdezésben keressen rá egy kifejezésre, adjon hozzá egy szűrőt, amely kiválasztja a 4-nél nagyobb minősítést tartalmazó dokumentumokat, majd csökkenő sorrendben rendezi az értékelés szerint. A szűrő egy logikai kifejezés, amelyet egy index IsFilterable mezőinek alapján értékel ki a program. A szűrő lekérdezések tartalmazhatnak vagy kizárnak értékeket. Ezért nincs relevanciapont társítva egy szűrő lekérdezéshez.

    // Query 2
    Console.WriteLine("Query #2: Search on 'hotels', filter on 'Rating gt 4', sort by Rating in descending order...\n");
    
    options = new SearchOptions()
    {
        Filter = "Rating gt 4",
        OrderBy = { "Rating desc" }
    };
    
    options.Select.Add("HotelId");
    options.Select.Add("HotelName");
    options.Select.Add("Rating");
    
    response = srchclient.Search<Hotel>("hotels", options);
    WriteDocuments(response);
    
  4. A harmadik lekérdezés a searchFields kifejezést mutatja be, amely egy teljes szöveges keresési művelet adott mezőkre való hatókörét mutatja be.

    // Query 3
    Console.WriteLine("Query #3: Limit search to specific fields (pool in Tags field)...\n");
    
    options = new SearchOptions()
    {
        SearchFields = { "Tags" }
    };
    
    options.Select.Add("HotelId");
    options.Select.Add("HotelName");
    options.Select.Add("Tags");
    
    response = srchclient.Search<Hotel>("pool", options);
    WriteDocuments(response);
    
  5. A negyedik lekérdezés olyan aspektusokat mutat be, amelyek felhasználhatók az arculati navigációs struktúra strukturálására.

     // Query 4
     Console.WriteLine("Query #4: Facet on 'Category'...\n");
    
     options = new SearchOptions()
     {
         Filter = ""
     };
    
     options.Facets.Add("Category");
    
     options.Select.Add("HotelId");
     options.Select.Add("HotelName");
     options.Select.Add("Category");
    
     response = srchclient.Search<Hotel>("*", options);
     WriteDocuments(response);
    
  6. Az ötödik lekérdezésben adjon vissza egy adott dokumentumot. A dokumentumkeresés általában egy eredményhalmaz OnClick-eseményére adott válasz.

     // Query 5
     Console.WriteLine("Query #5: Look up a specific document...\n");
    
     Response<Hotel> lookupResponse;
     lookupResponse = srchclient.GetDocument<Hotel>("3");
    
     Console.WriteLine(lookupResponse.Value.HotelId);
    
  7. Az utolsó lekérdezés az automatikus kiegészítés szintaxisát jeleníti meg, szimulálva az "sa" részleges felhasználói bemenetét, amely az indexben definiált javaslathoz társított forrásmezőkben két lehetséges egyezésre oldható fel.

     // Query 6
     Console.WriteLine("Query #6: Call Autocomplete on HotelName that starts with 'sa'...\n");
    
     var autoresponse = srchclient.Autocomplete("sa", "sg");
     WriteDocuments(autoresponse);
    
  8. RunQueries hozzáadása a Main()hoz.

    // Call the RunQueries method to invoke a series of queries
    Console.WriteLine("Starting queries...\n");
    RunQueries(srchclient);
    
    // End the program
    Console.WriteLine("{0}", "Complete. Press any key to end this program...\n");
    Console.ReadKey();
    

Az előző lekérdezések több módon is egyeztetik a kifejezéseket a lekérdezésekben: teljes szöveges keresés, szűrők és automatikus kiegészítés.

A teljes szöveges keresést és a szűrőket a SearchClient.Search metódussal hajtja végre. A keresési lekérdezések átadhatók a sztringbensearchText, míg egy szűrőkifejezés átadható a SearchOptions osztály Szűrő tulajdonságában. Ha keresés nélkül szeretne szűrni, egyszerűen adja meg "*" a searchTextKeresési módszer paraméterét. Ha szűrés nélkül szeretne keresni, hagyja meg a Filter tulajdonságot, vagy egyáltalán ne adja át a példányt SearchOptions .

A program futtatása

Nyomja le az F5 billentyűt az alkalmazás újraépítéséhez és a program teljes futtatásához.

A kimenet tartalmazza a Console.WriteLine üzeneteit, a lekérdezési információk és eredmények hozzáadásával.

Az erőforrások eltávolítása

Ha a saját előfizetésében dolgozik, érdemes az egyes projektek végén eldöntenie, hogy szüksége lesz-e még a létrehozott erőforrásokra. A továbbra is futó erőforrások költségekkel járhatnak. Az erőforrásokat törölheti egyesével, vagy az erőforráscsoport törlésével eltávolíthatja a benne lévő összes erőforrást is.

A portálon a bal oldali navigációs panel Minden erőforrás vagy Erőforráscsoport hivatkozásával kereshet és kezelhet erőforrásokat.

Ha ingyenes szolgáltatást használ, ne feledje, hogy három indexre, indexelőre és adatforrásra korlátozódik. A portálon törölheti az egyes elemeket, hogy a korlát alatt maradjon.

Következő lépések

Ebben a rövid útmutatóban feladatokat dolgozott ki egy index létrehozásához, dokumentumokba való betöltéséhez és lekérdezések futtatásához. Különböző szakaszokban billentyűparancsokkal egyszerűsítettük a kódot az olvashatóság és a megértés érdekében. Most, hogy megismerte az alapfogalmakat, próbáljon ki egy oktatóanyagot, amely meghívja az Azure AI Search API-kat egy webalkalmazásban.