2. Adım - .NET ile Arama Dizini oluşturma ve yükleme
Şu adımları izleyerek arama özellikli web sitenizi oluşturmaya devam edin:
- Arama kaynağı oluşturma
- Yeni dizin oluşturma
- Örnek betiği ve Azure SDK Azure.Search.Documents'ı kullanarak .NET ile verileri içeri aktarın.
Azure AI Search kaynağı oluşturma
Azure CLI veya Azure PowerShell kullanarak komut satırından yeni bir arama kaynağı oluşturun. Ayrıca dizine okuma erişimi için kullanılan bir sorgu anahtarı alırsınız ve nesneleri eklemek için kullanılan yerleşik yönetici anahtarını alırsınız.
Cihazınızda Azure CLI veya Azure PowerShell yüklü olmalıdır. Cihazınızda yerel yönetici değilseniz Azure PowerShell'i seçin ve geçerli kullanıcı olarak çalıştırmak için parametresini kullanın Scope
.
Not
Bu görev, Azure CLI ve Azure PowerShell için Visual Studio Code uzantıları gerektirmez. Visual Studio Code, uzantılar olmadan komut satırı araçlarını tanır.
Visual Studio Code'da, Terminal'in altında Yeni Terminal'i seçin.
Azure'a Bağlan:
az login
Yeni bir arama hizmeti oluşturmadan önce aboneliğiniz için mevcut hizmetleri listeleyin:
az resource list --resource-type Microsoft.Search/searchServices --output table
Kullanmak istediğiniz bir hizmetiniz varsa, adı not edin ve sonraki bölüme geçin.
Yeni bir arama hizmeti oluşturun. Kaynak grubu, hizmet adı, katman, bölge, bölümler ve çoğaltmalar için geçerli değerlerin yerine şablon olarak aşağıdaki komutu kullanın. Aşağıdaki deyim, önceki bir adımda oluşturulan "cognitive-search-demo-rg" kaynak grubunu kullanır ve "ücretsiz" katmanını belirtir. Azure aboneliğinizde zaten ücretsiz bir arama hizmeti varsa bunun yerine "temel" gibi faturalanabilir bir katman belirtin.
az search service create --name my-cog-search-demo-svc --resource-group cognitive-search-demo-rg --sku free --partition-count 1 --replica-count 1
Arama hizmetine okuma erişimi veren bir sorgu anahtarı alın. İki yönetici anahtarı ve bir sorgu anahtarı ile bir arama hizmeti sağlanır. Kaynak grubu ve arama hizmeti için geçerli adları kullanın. Sonraki bir adımda istemci koduna yapıştırabilmek için sorgu anahtarını Not Defteri kopyalayın:
az search query-key list --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Bir arama hizmeti yöneticisi API anahtarı alın. Yönetici API anahtarı, arama hizmetine yazma erişimi sağlar. Dizin oluşturan ve yükleyen toplu içeri aktarma adımında kullanabilmek için yönetici anahtarlarından birini Not Defteri kopyalayın:
az search admin-key show --resource-group cognitive-search-demo-rg --service-name my-cog-search-demo-svc
Toplu içeri aktarma betiğini Arama için hazırlama
Betik, Azure AI Search için Azure SDK'sını kullanır:
Visual Studio Code'da dosyasını alt dizininde açın
Program.cs
vesearch-website-functions-v4/bulk-insert
Azure Search SDK'sı ile kimlik doğrulaması yapmak için aşağıdaki değişkenleri kendi değerlerinizle değiştirin:- ADıNıZ-ARAMA-KAYNAK-ADI
- ARAMA-YÖNETICI ANAHTARıNıZ
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"); }
Proje dizininin alt dizini için Visual Studio Code'da tümleşik bir terminal açın ve
search-website-functions-v4/bulk-insert
bağımlılıkları yüklemek için aşağıdaki komutu çalıştırın.dotnet restore
Arama için toplu içeri aktarma betiğini çalıştırma
Aşağıdaki bash komutunu çalıştırarak betiği çalıştırmak üzere proje dizininin alt dizini
search-website-functions-v4/bulk-insert
olan için Visual Studio'daki tümleşik terminaliProgram.cs
kullanmaya devam edin:dotnet run
Kod çalışırken konsol ilerleme durumunu görüntüler.
Karşıya yükleme tamamlandığında konsola yazdırılan son deyim "Kitap verilerini toplu ekleme işlemi tamamlandı" olur.
Yeni Arama Dizinini gözden geçirme
Karşıya yükleme tamamlandıktan sonra arama dizini kullanıma hazır olur. Azure portalında yeni dizininizi gözden geçirin.
Azure portalında, önceki adımda oluşturduğunuz arama hizmetini bulun.
Sol tarafta Dizinler'i ve ardından good-books dizinini seçin.
Varsayılan olarak, dizin Arama gezgini sekmesinde açılır. Dizinden belge döndürmek için Ara'yı seçin.
Toplu içeri aktarma dosyası değişikliklerini geri alma
Değişiklikleri geri almak için dizindeki Visual Studio Code tümleşik terminalinde bulk-insert
aşağıdaki git komutunu kullanın. Öğreticiye devam etmek için gerekli değildir ve bu gizli dizileri deponuza kaydetmemeniz veya göndermemeniz gerekir.
git checkout .
Arama kaynağı adınızı kopyalayın
Arama kaynağı adınızı not edin. Azure İşlevi uygulamasını arama kaynağınıza bağlamak için buna ihtiyacınız olacaktır.
Dikkat
Azure İşlevi'nde arama yöneticisi anahtarınızı kullanmak isteyebilirsiniz ancak bu, en düşük ayrıcalık ilkesine uymaz. Azure İşlevi, sorgu anahtarını kullanarak en az ayrıcalığı kullanır.