Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini adalah panduan memulai cepat C# untuk pustaka klien warisan Microsoft.Azure.Search (versi 10), kini digantikan oleh pustaka klien Azure.Search.Documents (versi 11).
Nota
Jika Anda memiliki proyek pengembangan yang sudah ada atau dalam penerbangan, Anda dapat terus menggunakan versi 10. Tetapi untuk proyek baru, atau untuk menggunakan fitur baru, Anda harus beralih ke pustaka baru.
Tentang panduan cepat ini
Buat aplikasi konsol .NET Core di C# yang membuat, memuat, dan mengkueri indeks Azure Cognitive Search menggunakan Visual Studio dan pustaka klien Microsoft.Azure.Search.
Artikel ini menjelaskan cara membuat aplikasi. Anda juga dapat mengunduh dan menjalankan aplikasi lengkap.
Nota
Kode demo dalam artikel ini menggunakan metode sinkron dari Azure Cognitive Search versi 10 .NET SDK untuk kesederhanaan. Namun, untuk skenario produksi, sebaiknya gunakan metode asinkron di aplikasi Anda sendiri agar tetap dapat diskalakan dan responsif. Misalnya, Anda dapat menggunakan CreateAsync dan DeleteAsync alih-alih Create dan Delete.
Prasyarat
Sebelum memulai, Anda harus memiliki:
Sebuah akun Azure dengan langganan aktif. Buat akun secara gratis.
Layanan Azure Cognitive Search. Buat layanan atau temukan layanan yang sudah ada dalam langganan Anda saat ini. Anda dapat menggunakan layanan gratis untuk panduan cepat ini.
Visual Studio, semua edisi. Contoh kode dan instruksi diuji pada edisi Komunitas gratis.
Mendapatkan kunci dan URL
Panggilan ke layanan memerlukan titik akhir URL dan kunci akses pada setiap permintaan. Layanan pencarian dibuat dengan keduanya, jadi jika Anda menambahkan Azure Cognitive Search ke langganan Anda, ikuti langkah-langkah berikut untuk mendapatkan informasi yang diperlukan:
Masuk ke portal Microsoft Azure, dan di halaman Gambaran Umum layanan pencarian Anda, dapatkan URL. Contoh titik akhir mungkin terlihat seperti
https://mydemo.search.windows.net.Di Pengaturan>Kunci, dapatkan kunci admin untuk mendapatkan hak penuh atas layanan. Ada dua kunci admin yang dapat dipertukarkan, disediakan untuk menjaga kelangsungan bisnis jika Anda perlu mengganti salah satunya. Anda dapat menggunakan kunci utama atau sekunder pada permintaan untuk menambahkan, memodifikasi, dan menghapus objek.
Dapatkan kunci kueri juga. Ini adalah praktik terbaik untuk mengeluarkan permintaan kueri dengan akses baca-saja.
Semua permintaan memerlukan kunci api pada setiap permintaan yang dikirim ke layanan Anda. Memiliki kunci yang valid menetapkan kepercayaan, berdasarkan per permintaan, antara aplikasi yang mengirim permintaan dan layanan yang menanganinya.
Atur lingkungan Anda
Mulailah dengan membuka Visual Studio dan membuat proyek Aplikasi Konsol baru yang dapat berjalan di .NET Core.
Menginstal paket NuGet
Paket Microsoft.Azure.Search terdiri dari beberapa pustaka klien yang didistribusikan sebagai paket NuGet.
Untuk proyek ini, gunakan paket NuGet versi 10 Microsoft.Azure.Search dan paket NuGet terbaru Microsoft.Extensions.Configuration.Json .
Pada Tools>Paket Pengelolah NuGet , Pilih Kelola Paket NuGet Packages untuk Solusi....
Klik Telusuri.
Cari
Microsoft.Azure.Searchdan pilih versi 10.Klik Instal di sebelah kanan untuk menambahkan rakitan ke proyek dan solusi Anda.
Ulangi untuk
Microsoft.Extensions.Configuration.Json, memilih versi 2.2.0 atau yang lebih baru.
Menambahkan informasi layanan Azure Cognitive Search
Di Penjelajah Solusi, klik kanan pada proyek dan pilih Tambahkan>Item Baru... .
Di Tambahkan Item Baru, cari "JSON" untuk mengembalikan daftar jenis item terkait JSON.
Pilih File JSON, beri nama file "appsettings.json", dan klik Tambahkan.
Tambahkan file ke direktori output Anda. Klik kanan appsettings.json dan pilih Properti. Di Salin ke Direktori Output, pilih Salin jika lebih baru.
Salin JSON berikut ke dalam file JSON baru Anda.
{ "SearchServiceName": "<YOUR-SEARCH-SERVICE-NAME>", "SearchServiceAdminApiKey": "<YOUR-ADMIN-API-KEY>", "SearchIndexName": "hotels-quickstart" }Ganti nama layanan pencarian (YOUR-SEARCH-SERVICE-NAME) dan kunci API admin (YOUR-ADMIN-API-KEY) dengan nilai yang valid. Jika titik akhir layanan Anda adalah
https://mydemo.search.windows.net, nama layanannya adalah "mydemo".
Tambahkan kelas ". Metode" ke proyek Anda
Langkah ini diperlukan untuk menghasilkan output yang bermakna di konsol. Saat mencetak hasil ke jendela konsol, bidang individual dari objek Hotel harus dikembalikan sebagai string. Langkah ini mengimplementasikan ToString() untuk melakukan tugas ini, yang Anda lakukan dengan menyalin kode yang diperlukan ke dua file baru.
Tambahkan dua definisi kelas kosong ke proyek Anda: Address.Methods.cs, Hotel.Methods.cs
Di Address.Methods.cs, timpa konten default dengan kode berikut, baris 1-25.
Di Hotel.Methods.cs, salin baris 1-68.
1 - Buat indeks
Indeks hotel terdiri dari bidang sederhana dan kompleks, di mana bidang sederhana adalah "HotelName" atau "Description", dan bidang kompleks adalah alamat dengan subbidang, atau kumpulan kamar. Saat indeks menyertakan jenis kompleks, isolasi definisi bidang kompleks dalam kelas terpisah.
Tambahkan dua definisi kelas kosong ke proyek Anda: Address.cs, Hotel.cs
Pada Address.cs, gantilah isi bawaan dengan kode berikut:
using System; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Newtonsoft.Json; namespace AzureSearchQuickstart { public partial class Address { [IsSearchable] public string StreetAddress { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string City { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string StateProvince { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string PostalCode { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string Country { get; set; } } }Dalam Hotel.cs, kelas menentukan struktur keseluruhan indeks, termasuk referensi ke kelas alamat.
namespace AzureSearchQuickstart { using System; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Newtonsoft.Json; public partial class Hotel { [System.ComponentModel.DataAnnotations.Key] [IsFilterable] public string HotelId { get; set; } [IsSearchable, IsSortable] public string HotelName { get; set; } [IsSearchable] [Analyzer(AnalyzerName.AsString.EnMicrosoft)] public string Description { get; set; } [IsSearchable] [Analyzer(AnalyzerName.AsString.FrLucene)] [JsonProperty("Description_fr")] public string DescriptionFr { get; set; } [IsSearchable, IsFilterable, IsSortable, IsFacetable] public string Category { get; set; } [IsSearchable, IsFilterable, IsFacetable] public string[] Tags { get; set; } [IsFilterable, IsSortable, IsFacetable] public bool? ParkingIncluded { get; set; } [IsFilterable, IsSortable, IsFacetable] public DateTimeOffset? LastRenovationDate { get; set; } [IsFilterable, IsSortable, IsFacetable] public double? Rating { get; set; } public Address Address { get; set; } } }Atribut pada kolom menentukan bagaimana kolom tersebut digunakan dalam aplikasi. Misalnya,
IsSearchableatribut harus ditetapkan ke setiap bidang yang harus disertakan dalam pencarian teks lengkap.Nota
Di .NET SDK, bidang harus secara eksplisit dikaitkan sebagai
IsSearchable, ,IsSortableIsFilterable, danIsFacetable. Perilaku ini berbeda dengan REST API yang secara implisit memungkinkan atribusi berdasarkan jenis data (misalnya, bidang string sederhana secara otomatis dapat dicari).Tepat satu bidang dalam indeks jenis
stringAnda harus merupakan bidang kunci, yang secara unik mengidentifikasi setiap dokumen. Dalam skema ini, kuncinya adalahHotelId.Dalam indeks ini, bidang deskripsi memanfaatkan properti opsional
analyzer, yang ditentukan saat Anda ingin mengganti penganalisis Lucene standar default. Bidangdescription_frini menggunakan penganalisis Lucene Prancis (FrLucene) karena menyimpan teks Bahasa Prancis.descriptionmenggunakan penganalisis bahasa Microsoft opsional (EnMicrosoft).Dalam Program.cs, buat instans
SearchServiceClientkelas untuk terhubung ke layanan, menggunakan nilai yang disimpan dalam file konfigurasi aplikasi (appsettings.json).SearchServiceClientmemilikiIndexesproperti, menyediakan semua metode yang Anda butuhkan untuk membuat, mencantumkan, memperbarui, atau menghapus indeks Azure Cognitive Search.using System; using System.Linq; using System.Threading; using Microsoft.Azure.Search; using Microsoft.Azure.Search.Models; using Microsoft.Extensions.Configuration; namespace AzureSearchQuickstart { class Program { // Demonstrates index delete, create, load, and query // Commented-out code is uncommented in later steps static void Main(string[] args) { IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); IConfigurationRoot configuration = builder.Build(); SearchServiceClient serviceClient = CreateSearchServiceClient(configuration); string indexName = configuration["SearchIndexName"]; Console.WriteLine("{0}", "Deleting index...\n"); DeleteIndexIfExists(indexName, serviceClient); Console.WriteLine("{0}", "Creating index...\n"); CreateIndex(indexName, serviceClient); // Uncomment next 3 lines in "2 - Load documents" // ISearchIndexClient indexClient = serviceClient.Indexes.GetClient(indexName); // Console.WriteLine("{0}", "Uploading documents...\n"); // UploadDocuments(indexClient); // Uncomment next 2 lines in "3 - Search an index" // Console.WriteLine("{0}", "Searching index...\n"); // RunQueries(indexClient); Console.WriteLine("{0}", "Complete. Press any key to end application...\n"); Console.ReadKey(); } // Create the search service client private static SearchServiceClient CreateSearchServiceClient(IConfigurationRoot configuration) { string searchServiceName = configuration["SearchServiceName"]; string adminApiKey = configuration["SearchServiceAdminApiKey"]; SearchServiceClient serviceClient = new SearchServiceClient(searchServiceName, new SearchCredentials(adminApiKey)); return serviceClient; } // Delete an existing index to reuse its name private static void DeleteIndexIfExists(string indexName, SearchServiceClient serviceClient) { if (serviceClient.Indexes.Exists(indexName)) { serviceClient.Indexes.Delete(indexName); } } // Create an index whose fields correspond to the properties of the Hotel class. // The Address property of Hotel will be modeled as a complex field. // The properties of the Address class in turn correspond to sub-fields of the Address complex field. // The fields of the index are defined by calling the FieldBuilder.BuildForType() method. private static void CreateIndex(string indexName, SearchServiceClient serviceClient) { var definition = new Microsoft.Azure.Search.Models.Index() { Name = indexName, Fields = FieldBuilder.BuildForType<Hotel>() }; serviceClient.Indexes.Create(definition); } } }Jika memungkinkan, bagikan satu instans
SearchServiceClientdalam aplikasi Anda untuk menghindari pembukaan terlalu banyak koneksi. Metode kelas aman untuk mengaktifkan berbagi tersebut.Kelas ini memiliki beberapa konstruktor. Yang Anda cari menerima nama layanan pencarian Anda dan objek
SearchCredentialssebagai parameter.SearchCredentialsmembungkus kunci API Anda.Dalam definisi indeks, cara termudah untuk membuat
Fieldobjek adalah dengan memanggilFieldBuilder.BuildForTypemetode, dengan meneruskan kelas model sebagai parameter tipe. Kelas model memiliki properti yang dihubungkan dengan kolom indeks Anda. Pemetaan ini memungkinkan Anda untuk mengikat dokumen dari indeks pencarian Anda ke instans kelas model Anda.Nota
Jika Anda tidak berencana menggunakan kelas model, Anda masih dapat menentukan indeks dengan membuat
Fieldobjek secara langsung. Anda dapat memberikan nama bidang ke konstruktor, bersama dengan jenis data (atau penganalisis untuk bidang string). Anda juga dapat mengatur properti lain sepertiIsSearchable,IsFilterable, dan lain-lain.Tekan F5 untuk membuat aplikasi dan membuat indeks.
Jika proyek berhasil dibangun, jendela konsol terbuka, menulis pesan status ke layar untuk menghapus dan membuat indeks.
2 - Memuat dokumen
Di Azure Cognitive Search, dokumen adalah struktur data yang merupakan input ke pengindeksan dan output dari kueri. Seperti yang diperoleh dari sumber data eksternal, input dokumen mungkin berupa baris dalam database, blob dalam penyimpanan Blob, atau dokumen JSON pada disk. Dalam contoh ini, kami mengambil pintasan dan menyematkan dokumen JSON untuk empat hotel dalam kode secara langsung.
Saat mengunggah dokumen, Anda harus menggunakan IndexBatch objek. Sebuah IndexBatch berisi kumpulan IndexAction objek, yang masing-masing berisi dokumen dan properti yang memberi tahu Azure Cognitive Search tindakan apa yang harus dilakukan (mengunggah, menggabungkan, menghapus, dan menggabungkanAtauMengunggah).
Di Program.cs, buat array dokumen dan tindakan indeks, lalu teruskan array ke
IndexBatch. Dokumen di bawah ini sesuai dengan indeks "hotel-quickstart," sebagaimana didefinisikan oleh kelas hotel dan alamat.// Upload documents as a batch private static void UploadDocuments(ISearchIndexClient indexClient) { var actions = new IndexAction<Hotel>[] { IndexAction.Upload( new Hotel() { HotelId = "1", HotelName = "Secret Point Motel", Description = "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", DescriptionFr = "L'hôtel est idéalement situé sur la principale artère commerciale de la ville en plein cœur de New York. A quelques minutes se trouve la place du temps et le centre historique de la ville, ainsi que d'autres lieux d'intérêt qui font de New York l'une des villes les plus attractives et cosmopolites de l'Amérique.", Category = "Boutique", Tags = new[] { "pool", "air conditioning", "concierge" }, ParkingIncluded = false, LastRenovationDate = new DateTimeOffset(1970, 1, 18, 0, 0, 0, TimeSpan.Zero), Rating = 3.6, Address = new Address() { StreetAddress = "677 5th Ave", City = "New York", StateProvince = "NY", PostalCode = "10022", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "2", HotelName = "Twin Dome Motel", Description = "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", DescriptionFr = "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", Category = "Boutique", Tags = new[] { "pool", "free wifi", "concierge" }, ParkingIncluded = false, LastRenovationDate = new DateTimeOffset(1979, 2, 18, 0, 0, 0, TimeSpan.Zero), Rating = 3.60, Address = new Address() { StreetAddress = "140 University Town Center Dr", City = "Sarasota", StateProvince = "FL", PostalCode = "34243", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "3", HotelName = "Triple Landscape Hotel", Description = "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.", DescriptionFr = "L'hôtel est situé dans une place du XIXe siècle, qui a été agrandie et rénovée aux plus hautes normes architecturales pour créer un hôtel moderne, fonctionnel et de première classe dans lequel l'art et les éléments historiques uniques coexistent avec le confort le plus moderne.", Category = "Resort and Spa", Tags = new[] { "air conditioning", "bar", "continental breakfast" }, ParkingIncluded = true, LastRenovationDate = new DateTimeOffset(2015, 9, 20, 0, 0, 0, TimeSpan.Zero), Rating = 4.80, Address = new Address() { StreetAddress = "3393 Peachtree Rd", City = "Atlanta", StateProvince = "GA", PostalCode = "30326", Country = "USA" } } ), IndexAction.Upload( new Hotel() { HotelId = "4", HotelName = "Sublime Cliff Hotel", Description = "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.", DescriptionFr = "Le sublime Cliff Hotel est situé au coeur du centre historique de sublime dans un quartier extrêmement animé et vivant, à courte distance de marche des sites et monuments de la ville et est entouré par l'extraordinaire beauté des églises, des bâtiments, des commerces et Monuments. Sublime Cliff fait partie d'un Palace 1800 restauré avec amour.", Category = "Boutique", Tags = new[] { "concierge", "view", "24-hour front desk service" }, ParkingIncluded = true, LastRenovationDate = new DateTimeOffset(1960, 2, 06, 0, 0, 0, TimeSpan.Zero), Rating = 4.6, Address = new Address() { StreetAddress = "7400 San Pedro Ave", City = "San Antonio", StateProvince = "TX", PostalCode = "78216", Country = "USA" } } ), }; var batch = IndexBatch.New(actions); try { indexClient.Documents.Index(batch); } catch (IndexBatchException e) { // When a service is under load, indexing might fail for some documents in the batch. // Depending on your application, you can compensate by delaying and retrying. // For this simple demo, we just log the failed document keys and continue. Console.WriteLine( "Failed to index some of the documents: {0}", String.Join(", ", e.IndexingResults.Where(r => !r.Succeeded).Select(r => r.Key))); } // Wait 2 seconds before starting queries Console.WriteLine("Waiting for indexing...\n"); Thread.Sleep(2000); }Setelah menginisialisasi
IndexBatchobjek, Anda dapat mengirimkannya ke indeks dengan memanggilDocuments.Indexobjek AndaSearchIndexClient.Documentsadalah properti dariSearchIndexClientyang menyediakan metode untuk menambahkan, memodifikasi, menghapus, atau mengkueri dokumen dalam indeks Anda.Di
try/catchsekitar panggilan keIndexmetode menangkap kegagalan pengindeksan, yang mungkin terjadi jika layanan Anda berada di bawah beban berat. Dalam kode produksi, Anda dapat menunda lalu mencoba lagi mengindeks dokumen yang gagal, atau mencatat dan melanjutkan seperti sampel, atau menanganinya dengan cara lain yang memenuhi persyaratan konsistensi data aplikasi Anda.Penundaan 2 detik mengkompensasi pengindeksan, yang tidak sinkron, sehingga semua dokumen dapat diindeks sebelum kueri dieksekusi. Pengodean dalam penundaan biasanya hanya diperlukan dalam demo, pengujian, dan aplikasi contoh.
Dalam Program.cs, di fungsi utama, hapus komentar pada baris untuk "2 - Muat dokumen".
// Uncomment next 3 lines in "2 - Load documents" ISearchIndexClient indexClient = serviceClient.Indexes.GetClient(indexName); Console.WriteLine("{0}", "Uploading documents...\n"); UploadDocuments(indexClient);Tekan F5 untuk membangun kembali aplikasi.
Jika proyek berhasil dibangun, jendela konsol terbuka, menulis pesan status, kali ini dengan pesan tentang mengunggah dokumen. Di portal Microsoft Azure, di halaman Gambaran Umum layanan pencarian, indeks hotel-quickstart sekarang harus memiliki 4 dokumen.
Untuk informasi selengkapnya tentang pemrosesan dokumen, lihat "Bagaimana .NET SDK menangani dokumen".
3 - Mencari indeks
Anda bisa mendapatkan hasil kueri segera setelah dokumen pertama diindeks, tetapi pengujian aktual indeks Anda harus menunggu hingga semua dokumen diindeks.
Bagian ini menambahkan dua bagian fungsionalitas: logika kueri, dan hasil. Untuk kueri, gunakan metode Search. Metode ini mengambil teks pencarian serta parameter lainnya.
Kelas DocumentsSearchResult mewakili hasilnya.
Di Program.cs, buat metode WriteDocuments yang mencetak hasil pencarian ke konsol.
private static void WriteDocuments(DocumentSearchResult<Hotel> searchResults) { foreach (SearchResult<Hotel> result in searchResults.Results) { Console.WriteLine(result.Document); } Console.WriteLine(); }Buat metode RunQueries untuk menjalankan kueri dan mengembalikan hasil. Hasilnya merupakan objek Hotel. Anda dapat menggunakan parameter pilih untuk menampilkan bidang individual. Jika bidang tidak disertakan dalam parameter pilih, properti Hotel yang sesuai akan null.
private static void RunQueries(ISearchIndexClient indexClient) { SearchParameters parameters; DocumentSearchResult<Hotel> results; // Query 1 Console.WriteLine("Query 1: Search for term 'Atlanta' with no result trimming"); parameters = new SearchParameters(); results = indexClient.Documents.Search<Hotel>("Atlanta", parameters); WriteDocuments(results); // Query 2 Console.WriteLine("Query 2: Search on the term 'Atlanta', with trimming"); Console.WriteLine("Returning only these fields: HotelName, Tags, Address:\n"); parameters = new SearchParameters() { Select = new[] { "HotelName", "Tags", "Address" }, }; results = indexClient.Documents.Search<Hotel>("Atlanta", parameters); WriteDocuments(results); // Query 3 Console.WriteLine("Query 3: Search for the terms 'restaurant' and 'wifi'"); Console.WriteLine("Return only these fields: HotelName, Description, and Tags:\n"); parameters = new SearchParameters() { Select = new[] { "HotelName", "Description", "Tags" } }; results = indexClient.Documents.Search<Hotel>("restaurant, wifi", parameters); WriteDocuments(results); // Query 4 -filtered query Console.WriteLine("Query 4: Filter on ratings greater than 4"); Console.WriteLine("Returning only these fields: HotelName, Rating:\n"); parameters = new SearchParameters() { Filter = "Rating gt 4", Select = new[] { "HotelName", "Rating" } }; results = indexClient.Documents.Search<Hotel>("*", parameters); WriteDocuments(results); // Query 5 - top 2 results Console.WriteLine("Query 5: Search on term 'boutique'"); Console.WriteLine("Sort by rating in descending order, taking the top two results"); Console.WriteLine("Returning only these fields: HotelId, HotelName, Category, Rating:\n"); parameters = new SearchParameters() { OrderBy = new[] { "Rating desc" }, Select = new[] { "HotelId", "HotelName", "Category", "Rating" }, Top = 2 }; results = indexClient.Documents.Search<Hotel>("boutique", parameters); WriteDocuments(results); }Ada dua cara untuk mencocokkan istilah dalam kueri: pencarian teks lengkap, dan filter. Kueri pencarian teks lengkap mencari satu atau beberapa istilah dalam
IsSearchablebidang dalam indeks Anda. Filter adalah ekspresi boolean yang dievaluasi terhadapIsFilterablekolom dalam indeks. Anda dapat menggunakan pencarian teks lengkap dan filter bersama-sama atau terpisah.Pencarian dan filter dilakukan menggunakan
Documents.Searchmetode . Kueri pencarian dapat diteruskan dalamsearchTextparameter, sementara ekspresi filter dapat diteruskan diFilterpropertiSearchParameterskelas. Untuk memfilter tanpa mencari, cukup isikan"*"ke parametersearchText. Untuk mencari tanpa pemfilteran, biarkan propertiFiltertetap tidak diatur, atau jangan gunakan instansSearchParameterssama sekali.Di Program.cs, di utama, batalkan komentar baris untuk "3 - Pencarian".
// Uncomment next 2 lines in "3 - Search an index" Console.WriteLine("{0}", "Searching documents...\n"); RunQueries(indexClient);Solusinya sekarang selesai. Tekan F5 untuk membangun kembali aplikasi dan menjalankan program secara keseluruhan.
Output mencakup pesan yang sama seperti sebelumnya, dengan penambahan informasi dan hasil kueri.
Membersihkan sumber daya
Saat Anda bekerja dalam langganan Anda sendiri, ada baiknya di akhir proyek mengidentifikasi apakah sumber daya yang Anda buat masih diperlukan. Sumber daya yang dibiarkan tetap aktif dapat merugikan Anda secara finansial. Anda dapat menghapus sumber daya satu per satu atau menghapus grup sumber daya untuk menghapus seluruh kumpulan sumber daya.
Anda dapat menemukan dan mengelola sumber daya di portal, menggunakan tautan Semua sumber daya atau Grup sumber daya di panel navigasi kiri.
Jika Anda menggunakan layanan gratis, ingatlah bahwa Anda terbatas pada tiga indeks, pengindeks, dan sumber data. Anda dapat menghapus item individual di portal agar tetap di bawah batas.
Langkah selanjutnya
Dalam panduan cepat C# ini, Anda bekerja melalui serangkaian tugas untuk membuat indeks, memasukkan dokumen-dokumen ke dalamnya, dan menjalankan pencarian. Pada tahap yang berbeda, pintasan diambil untuk menyederhanakan kode agar mudah dibaca dan dipahami. Jika Anda nyaman dengan konsep dasar, kami merekomendasikan artikel berikutnya untuk eksplorasi pendekatan dan konsep alternatif yang akan memperdalam pengetahuan Anda.
Kode sampel dan indeks adalah versi yang diperluas dari yang satu ini. Contoh berikutnya menambahkan koleksi ruang, menggunakan kelas dan tindakan yang berbeda, dan melihat lebih dekat bagaimana proses pengolahan bekerja.
Ingin mengoptimalkan dan menghemat pengeluaran cloud Anda?