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.
In Terminale in Visual Studio Code selezionare Nuovo terminale.
Connessione ad Azure:
az login
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.
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
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
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
Preparare lo script di importazione bulk per la ricerca
Lo script usa Azure SDK per Ricerca intelligenza artificiale di Azure:
In Visual Studio Code aprire il
Program.cs
file nella sottodirectory ,search-website-functions-v4/bulk-insert
sostituire 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"); }
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
Eseguire lo script di importazione bulk per la ricerca
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 loProgram.cs
script:dotnet run
Durante l'esecuzione del codice, nella console viene visualizzato lo stato di avanzamento.
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.
In portale di Azure trovare il servizio di ricerca creato nel passaggio precedente.
A sinistra selezionare Indici e quindi selezionare l'indice dei libri validi.
Per impostazione predefinita, l'indice viene aperto nella scheda Esplora ricerche . Selezionare Cerca per restituire documenti dall'indice.
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.