Share via


Passaggio 2: Creare e caricare l'indice di ricerca con .NET

Continuare a compilare il sito Web abilitato per la ricerca seguendo questa procedura:

  • Creare una risorsa di ricerca
  • Creare un nuovo indice
  • Importare dati con .NET usando lo script di esempio e Azure SDK Azure.Search.Documents.

Creare una risorsa di Ricerca intelligenza artificiale di Azure

Creare una nuova risorsa di ricerca dalla riga di comando usando l'interfaccia della riga di comando di Azure o Azure PowerShell. È anche possibile recuperare una chiave di query usata per l'accesso in lettura all'indice e ottenere la chiave di amministrazione predefinita usata per l'aggiunta di oggetti.

È necessario che nel dispositivo sia installata l'interfaccia della riga di comando di Azure o Azure PowerShell . Se non si è un amministratore locale nel dispositivo, scegliere Azure PowerShell e usare il Scope parametro per l'esecuzione come utente corrente.

Nota

Questa attività non richiede le estensioni di Visual Studio Code per l'interfaccia della riga di comando di Azure e Azure PowerShell. Visual Studio Code riconosce gli strumenti da riga di comando senza le estensioni.

  1. In Terminale in Visual Studio Code selezionare Nuovo terminale.

  2. Connessione ad Azure:

    az login
    
  3. Prima di creare un nuovo servizio di ricerca, elencare i servizi esistenti per la sottoscrizione:

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

    Se si dispone di un servizio che si vuole usare, prendere nota del nome e quindi passare alla sezione successiva.

  4. Creare un nuovo servizio di ricerca. Usare il comando seguente come modello, sostituendo valori validi per il gruppo di risorse, il nome del servizio, il livello, l'area, le partizioni e le repliche. L'istruzione seguente usa il gruppo di risorse "cognitive-search-demo-rg" creato in un passaggio precedente e specifica il livello "gratuito". Se la sottoscrizione di Azure ha già un servizio di ricerca gratuito, specificare invece un livello fatturabile, ad esempio "basic".

    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. Ottenere una chiave di query che concede l'accesso in lettura a un servizio di ricerca. Viene effettuato il provisioning di un servizio di ricerca con due chiavi di amministrazione e una chiave di query. Sostituire i nomi validi per il gruppo di risorse e il servizio di ricerca. Copiare la chiave di query in Blocco note in modo da poterla incollare nel codice client in un passaggio successivo:

    az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
    
  6. Ottenere una chiave API dell'amministratore del servizio di ricerca. Una chiave API amministratore fornisce l'accesso in scrittura al servizio di ricerca. Copiare una delle chiavi di amministrazione in Blocco note in modo che sia possibile usarla nel passaggio di importazione bulk che crea e carica un indice:

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

Lo script usa Azure SDK per Ricerca intelligenza artificiale di Azure:

  1. In Visual Studio Code aprire il Program.cs file nella sottodirectory , search-website-functions-v4/bulk-insertsostituire le variabili seguenti con i propri valori per l'autenticazione con Azure Search SDK:

    • YOUR-edizione Standard ARCH-RESOURCE-NAME
    • YOUR-edizione Standard ARCH-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. Aprire un terminale integrato in Visual Studio Code per la sottodirectory della directory del progetto, search-website-functions-v4/bulk-insert, quindi eseguire il comando seguente per installare le dipendenze.

    dotnet restore
    
  1. Continuare a usare il terminale integrato in Visual Studio per la sottodirectory della directory del progetto, search-website-functions-v4/bulk-insert, per eseguire il comando bash seguente per eseguire lo Program.cs script:

    dotnet run
    
  2. Durante l'esecuzione del codice, nella console viene visualizzato lo stato di avanzamento.

  3. Al termine del caricamento, l'ultima istruzione stampata nella console è "Finished bulk inserting book data".

Esaminare il nuovo indice di ricerca

Al termine del caricamento, l'indice di ricerca è pronto per l'uso. Esaminare il nuovo indice in portale di Azure.

  1. In portale di Azure trovare il servizio di ricerca creato nel passaggio precedente.

  2. A sinistra selezionare Indici e quindi selezionare l'indice dei libri validi.

    Screenshot espandibile di portale di Azure che mostra l'indice.

  3. Per impostazione predefinita, l'indice viene aperto nella scheda Esplora ricerche . Selezionare Cerca per restituire documenti dall'indice.

    Screenshot espandibile di portale di Azure che mostra i risultati della ricerca

Rollback delle modifiche al file di importazione bulk

Usare il comando git seguente nel terminale integrato di Visual Studio Code nella bulk-insert directory per eseguire il rollback delle modifiche. Non sono necessari per continuare l'esercitazione e non è consigliabile salvare o eseguire il push di questi segreti nel repository.

git checkout .

Copiare il nome della risorsa di ricerca

Prendere nota del nome della risorsa di ricerca. È necessario per connettere l'app per le funzioni di Azure alla risorsa di ricerca.

Attenzione

Anche se si potrebbe essere tentati di usare la chiave di amministrazione della ricerca nella funzione di Azure, questo non segue il principio dei privilegi minimi. La funzione di Azure userà la chiave di query per conformarsi ai privilegi minimi.

Passaggi successivi

Distribuire l'app Web statica