Steg 2 – Skapa och läsa in sökindex med .NET

Fortsätt att skapa din sökaktiverade webbplats genom att följa dessa steg:

  • Skapa en sökresurs
  • Skapa ett nytt index
  • Importera data med .NET med exempelskriptet och Azure SDK Azure.Search.Documents.

Skapa en Azure AI Search-resurs

Skapa en ny sökresurs från kommandoraden med antingen Azure CLI eller Azure PowerShell. Du hämtar också en frågenyckel som används för läsåtkomst till indexet och hämtar den inbyggda administratörsnyckeln som används för att lägga till objekt.

Du måste ha Azure CLI eller Azure PowerShell installerat på enheten. Om du inte är lokal administratör på enheten väljer du Azure PowerShell och använder parametern Scope för att köra som den aktuella användaren.

Kommentar

Den här uppgiften kräver inte Visual Studio Code-tilläggen för Azure CLI och Azure PowerShell. Visual Studio Code identifierar kommandoradsverktygen utan tilläggen.

  1. I Visual Studio Code går du till Terminal och väljer Ny terminal.

  2. Anslut till Azure:

    az login
    
  3. Innan du skapar en ny söktjänst anger du de befintliga tjänsterna för din prenumeration:

    az resource list --resource-type Microsoft.Search/searchServices --output table
    

    Om du har en tjänst som du vill använda kan du anteckna namnet och sedan gå vidare till nästa avsnitt.

  4. Skapa en ny söktjänst. Använd följande kommando som en mall och ersätt giltiga värden för resursgruppen, tjänstnamnet, nivån, regionen, partitionerna och replikerna. Följande instruktion använder resursgruppen "cognitive-search-demo-rg" som skapades i ett tidigare steg och anger nivån "kostnadsfri". Om din Azure-prenumeration redan har en kostnadsfri söktjänst anger du en fakturerbar nivå, till exempel "basic" i stället.

    az search service create --name my-cog-search-demo-svc --resource-group cognitive-search-demo-rg --sku free --partition-count 1 --replica-count 1
    
  5. Hämta en frågenyckel som ger läsbehörighet till en söktjänst. En söktjänst etableras med två administratörsnycklar och en frågenyckel. Ersätt giltiga namn för resursgruppen och söktjänsten. Kopiera frågenyckeln till Anteckningar så att du kan klistra in den i klientkoden i ett senare steg:

    az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
    
  6. Hämta en API-nyckel för söktjänstens administratör. En administratörs-API-nyckel ger skrivåtkomst till söktjänsten. Kopiera någon av administratörsnycklarna till Anteckningar så att du kan använda den i massimportsteget som skapar och läser in ett index:

    az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
    

Skriptet använder Azure SDK för Azure AI Search:

  1. Öppna filen i underkatalogen Program.cs i Visual Studio Code och search-website-functions-v4/bulk-insertersätt följande variabler med dina egna värden för att autentisera med Azure Search SDK:

    • YOUR-SEARCH-RESOURCE-NAME
    • YOUR-SEARCH-ADMIN-KEY
    
    using Azure;
    using Azure.Search.Documents;
    using Azure.Search.Documents.Indexes;
    using Azure.Search.Documents.Indexes.Models;
    using AzureSearch.BulkInsert;
    using ServiceStack;
    
    const string BOOKS_URL = "https://raw.githubusercontent.com/Azure-Samples/azure-search-sample-data/main/good-books/books.csv";
    const string SEARCH_ENDPOINT = "https://YOUR-SEARCH-RESOURCE-NAME.search.windows.net";
    const string SEARCH_KEY = "YOUR-SEARCH-ADMIN-KEY";
    const string SEARCH_INDEX_NAME = "good-books";
    
    Uri searchEndpointUri = new(SEARCH_ENDPOINT);
    
    SearchClient client = new(
        searchEndpointUri,
        SEARCH_INDEX_NAME,
        new AzureKeyCredential(SEARCH_KEY));
    
    SearchIndexClient clientIndex = new(
        searchEndpointUri,
        new AzureKeyCredential(SEARCH_KEY));
    
    await CreateIndexAsync(clientIndex);
    await BulkInsertAsync(client);
    
    static async Task CreateIndexAsync(SearchIndexClient clientIndex)
    {
        Console.WriteLine("Creating (or updating) search index");
        SearchIndex index = new BookSearchIndex(SEARCH_INDEX_NAME);
        var result = await clientIndex.CreateOrUpdateIndexAsync(index);
    
        Console.WriteLine(result);
    }
    
    static async Task BulkInsertAsync(SearchClient client)
    {
        Console.WriteLine("Download data file");
        using HttpClient httpClient = new();
    
        var csv = await httpClient.GetStringAsync(BOOKS_URL);
    
        Console.WriteLine("Reading and parsing raw CSV data");
        var books =
            csv.ReplaceFirst("book_id", "id").FromCsv<List<BookModel>>();
    
        Console.WriteLine("Uploading bulk book data");
        _ = await client.UploadDocumentsAsync(books);
    
        Console.WriteLine("Finished bulk inserting book data");
    }
    
  2. Öppna en integrerad terminal i Visual Studio Code för projektkatalogens underkatalog och search-website-functions-v4/bulk-insertkör sedan följande kommando för att installera beroendena.

    dotnet restore
    
  1. Fortsätt att använda den integrerade terminalen i Visual Studio för projektkatalogens underkatalog, search-website-functions-v4/bulk-insert, för att köra följande bash-kommando för att köra skriptet Program.cs :

    dotnet run
    
  2. När koden körs visar konsolen förlopp.

  3. När uppladdningen är klar är den sista instruktionen som skrivs ut till konsolen "Slutförd massinfogning av bokdata".

Granska det nya sökindexet

När uppladdningen är klar är sökindexet redo att användas. Granska ditt nya index i Azure-portalen.

  1. Leta reda på söktjänsten som du skapade i föregående steg i Azure-portalen.

  2. Till vänster väljer du Index och sedan indexet good-books.

    Utökningsbar skärmbild av Azure-portalen som visar indexet.

  3. Som standard öppnas indexet på fliken Sökutforskaren . Välj Sök om du vill returnera dokument från indexet.

    Utökningsbar skärmbild av Azure-portalen som visar sökresultat

Återställning av massimportfiländringar

Använd följande git-kommando i visual studiokodens integrerade terminal i bulk-insert katalogen för att återställa ändringarna. De behövs inte för att fortsätta självstudien och du bör inte spara eller push-överföra dessa hemligheter till lagringsplatsen.

git checkout .

Kopiera sökresursens namn

Anteckna namnet på sökresursen. Du behöver detta för att ansluta Azure-funktionsappen till din sökresurs.

Varning

Du kan vara frestad att använda din sökadministratörsnyckel i Azure-funktionen, men det följer inte principen om lägsta behörighet. Azure-funktionen använder frågenyckeln för att följa lägsta behörighet.

Nästa steg

Distribuera din statiska webbapp