Krok 2. Tworzenie i ładowanie indeksu wyszukiwania za pomocą platformy .NET
Kontynuuj tworzenie witryny internetowej obsługującej wyszukiwanie, wykonując następujące kroki:
- Tworzenie zasobu wyszukiwania
- Tworzenie nowego indeksu
- Importowanie danych za pomocą platformy .NET przy użyciu przykładowego skryptu i zestawu Azure SDK Azure.Search.Documents.
Tworzenie zasobu usługi Azure AI Search
Utwórz nowy zasób wyszukiwania z poziomu wiersza polecenia przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Pobierasz również klucz zapytania używany do odczytu do indeksu i uzyskujesz wbudowany klucz administracyjny używany do dodawania obiektów.
Na urządzeniu musi być zainstalowany interfejs wiersza polecenia platformy Azure lub program Azure PowerShell . Jeśli nie jesteś administratorem lokalnym na urządzeniu, wybierz program Azure PowerShell i użyj parametru Scope
, aby uruchomić go jako bieżący użytkownik.
Uwaga
To zadanie nie wymaga rozszerzeń programu Visual Studio Code dla interfejsu wiersza polecenia platformy Azure i programu Azure PowerShell. Program Visual Studio Code rozpoznaje narzędzia wiersza polecenia bez rozszerzeń.
W programie Visual Studio Code w obszarze Terminal wybierz pozycję Nowy terminal.
Połączenie na platformę Azure:
az login
Przed utworzeniem nowej usługi wyszukiwania wyświetl listę istniejących usług dla subskrypcji:
az resource list --resource-type Microsoft.Search/searchServices --output table
Jeśli masz usługę, której chcesz użyć, zanotuj nazwę, a następnie przejdź do następnej sekcji.
Utwórz nową usługę wyszukiwania. Użyj następującego polecenia jako szablonu, podstawiając prawidłowe wartości dla grupy zasobów, nazwy usługi, warstwy, regionu, partycji i replik. Poniższa instrukcja używa grupy zasobów "cognitive-search-demo-rg" utworzonej w poprzednim kroku i określa warstwę "bezpłatna". Jeśli Twoja subskrypcja platformy Azure ma już bezpłatną usługę wyszukiwania, określ warstwę rozliczaną, taką jak "podstawowa".
az search service create --name my-cog-search-demo-svc --resource-group cognitive-search-demo-rg --sku free --partition-count 1 --replica-count 1
Pobierz klucz zapytania, który udziela dostępu do odczytu do usługi wyszukiwania. Usługa wyszukiwania jest aprowizowana przy użyciu dwóch kluczy administracyjnych i jednego klucza zapytania. Zastąp prawidłowe nazwy grupy zasobów i usługi wyszukiwania. Skopiuj klucz zapytania do Notatnik, aby można było wkleić go do kodu klienta w późniejszym kroku:
az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Pobierz klucz interfejsu API administratora usługi wyszukiwania. Klucz interfejsu API administratora zapewnia dostęp do zapisu w usłudze wyszukiwania. Skopiuj jeden z kluczy administratora, aby Notatnik, aby można było go użyć w kroku importu zbiorczego, który tworzy i ładuje indeks:
az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Przygotowywanie skryptu importu zbiorczego do wyszukiwania
Skrypt używa zestawu Azure SDK dla usługi Azure AI Search:
W programie Visual Studio Code otwórz
Program.cs
plik w podkatalogu ,search-website-functions-v4/bulk-insert
zastąp następujące zmienne własnymi wartościami, aby uwierzytelnić się przy użyciu zestawu SDK usługi Azure Search:- NAZWA ZASOBU WYSZUKIWANIA
- TWÓJ-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"); }
Otwórz zintegrowany terminal w programie Visual Studio Code dla podkatalogu katalogu projektu, a następnie uruchom następujące polecenie,
search-website-functions-v4/bulk-insert
aby zainstalować zależności.dotnet restore
Uruchamianie skryptu importu zbiorczego dla wyszukiwania
Kontynuuj korzystanie ze zintegrowanego terminalu w programie Visual Studio dla podkatalogu katalogu projektu ,
search-website-functions-v4/bulk-insert
aby uruchomić następujące polecenie powłoki bash w celu uruchomienia skryptuProgram.cs
:dotnet run
W miarę uruchamiania kodu w konsoli jest wyświetlany postęp.
Po zakończeniu przekazywania ostatnia instrukcja wydrukowana w konsoli to "Zakończono zbiorcze wstawianie danych książki".
Przejrzyj nowy indeks wyszukiwania
Po zakończeniu przekazywania indeks wyszukiwania jest gotowy do użycia. Przejrzyj nowy indeks w witrynie Azure Portal.
W witrynie Azure Portal znajdź usługę wyszukiwania utworzoną w poprzednim kroku.
Po lewej stronie wybierz pozycję Indeksy, a następnie wybierz indeks good-books.
Domyślnie indeks zostanie otwarty na karcie Eksplorator wyszukiwania. Wybierz pozycję Wyszukaj , aby zwrócić dokumenty z indeksu.
Wycofywanie zmian pliku importu zbiorczego
Użyj następującego polecenia git w zintegrowanym terminalu programu Visual Studio Code w bulk-insert
katalogu, aby wycofać zmiany. Nie są one potrzebne do kontynuowania samouczka i nie należy zapisywać ani wypychać tych wpisów tajnych do repozytorium.
git checkout .
Kopiowanie nazwy zasobu wyszukiwania
Zanotuj nazwę zasobu wyszukiwania. Będzie to konieczne, aby połączyć aplikację funkcji platformy Azure z zasobem wyszukiwania.
Uwaga
Chociaż możesz być kuszony, aby użyć klucza administratora wyszukiwania w funkcji platformy Azure, to nie jest zgodna z zasadą najniższych uprawnień. Funkcja platformy Azure użyje klucza zapytania w celu zachowania zgodności z najniższymi uprawnieniami.