Tingkatkan ke Azure Search .NET SDK versi 3

Jika Anda menggunakan pratinjau versi 2.0 atau yang lebih lama dari Azure Search .NET SDK, artikel ini akan membantu Anda meningkatkan aplikasi untuk menggunakan versi 3.

Untuk panduan SDK yang lebih umum termasuk contoh, lihat Cara menggunakan Azure Search dari Aplikasi .NET.

Versi 3 dari Azure Search .NET SDK berisi beberapa perubahan dari versi sebelumnya. Ini sebagian besar kecil, jadi mengubah kode Anda seharusnya hanya memerlukan upaya minimal. Lihat Langkah-langkah untuk meningkatkan instruksi tentang cara mengubah kode Anda untuk menggunakan versi SDK baru.

Nota

Jika Anda menggunakan pratinjau versi 1.0.2 atau yang lebih lama, Anda harus meningkatkan ke versi 1.1 terlebih dahulu, lalu meningkatkan ke versi 3. Lihat Meningkatkan ke Azure Search .NET SDK versi 1.1 untuk instruksi.

Instans layanan Azure Search Anda mendukung beberapa versi REST API, termasuk yang terbaru. Anda dapat terus menggunakan versi saat tidak lagi versi terbaru, tetapi kami sarankan Anda memigrasikan kode Anda untuk menggunakan versi terbaru. Saat menggunakan REST API, Anda harus menentukan versi API di setiap permintaan melalui parameter versi api. Saat menggunakan .NET SDK, versi SDK yang Anda gunakan menentukan versi REST API yang sesuai. Jika Anda menggunakan SDK yang lebih lama, Anda dapat terus menjalankan kode tersebut tanpa perubahan bahkan jika layanan ditingkatkan untuk mendukung versi API yang lebih baru.

Apa yang baru dalam versi 3

Versi 3 dari Azure Search .NET SDK menargetkan versi terbaru yang tersedia secara umum dari Azure Search REST API, khususnya 2016-09-01. Ini memungkinkan untuk menggunakan banyak fitur baru Azure Search dari aplikasi .NET, termasuk yang berikut ini:

Langkah-langkah untuk peningkatan

Pertama, perbarui referensi NuGet Anda untuk Microsoft.Azure.Search menggunakan Konsol Manajer Paket NuGet atau dengan mengklik kanan referensi proyek Anda dan memilih "Kelola Paket NuGet..." di Visual Studio.

Setelah NuGet mengunduh paket baru dan dependensinya, bangun kembali proyek Anda. Bergantung pada bagaimana kode Anda disusun, kode tersebut mungkin berhasil dibangun kembali. Jika demikian, Anda siap untuk pergi!

Jika build gagal, Anda akan melihat build error seperti berikut ini:

Program.cs(31,45,31,86): error CS0266: Cannot implicitly convert type 'Microsoft.Azure.Search.ISearchIndexClient' to 'Microsoft.Azure.Search.SearchIndexClient'. An explicit conversion exists (are you missing a cast?)

Langkah selanjutnya adalah memperbaiki kesalahan build ini. Lihat Perubahan besar di versi 3 untuk mendapatkan detail tentang apa yang menyebabkan kesalahan dan cara memperbaikinya.

Anda mungkin melihat peringatan build tambahan yang terkait dengan metode atau properti usang. Peringatan akan mencakup instruksi tentang apa yang harus digunakan alih-alih fitur yang tidak digunakan lagi. Misalnya, jika aplikasi Anda menggunakan IndexingParameters.Base64EncodeKeys properti , Anda harus mendapatkan peringatan yang mengatakan "This property is obsolete. Please create a field mapping using 'FieldMapping.Base64Encode' instead."

Setelah memperbaiki kesalahan build, Anda dapat membuat perubahan pada aplikasi untuk memanfaatkan fungsionalitas baru jika diinginkan. Fitur baru di SDK dirinci dalam Apa yang baru dalam versi 3.

Perubahan mendasar pada versi 3

Ada sejumlah kecil perubahan signifikan di versi 3 yang mungkin memerlukan perubahan kode selain mengulang pembangunan aplikasi Anda.

Jenis pengembalian dari Indexes.GetClient

Metode Indexes.GetClient ini memiliki jenis pengembalian baru. Sebelumnya, itu mengembalikan SearchIndexClient, tetapi ini diubah menjadi ISearchIndexClient dalam versi 2.0-pratinjau, dan perubahan tersebut lantas diterapkan ke versi 3. Ini untuk mendukung pelanggan yang ingin meniru metode GetClient untuk pengujian unit dengan mengembalikan implementasi tiruan dari ISearchIndexClient.

Contoh

Jika kode Anda terlihat seperti ini:

SearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");

Anda dapat mengubahnya menjadi ini untuk memperbaiki kesalahan build apa pun:

ISearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");

AnalyzerName, DataType, dan lainnya tidak lagi secara implisit dapat dikonversi ke string

Ada banyak jenis di Azure Search .NET SDK yang berasal dari ExtensibleEnum. Sebelumnya jenis ini semuanya secara implisit dapat dikonversi ke jenis string. Namun, bug ditemukan dalam Object.Equals implementasi untuk kelas-kelas ini, dan memperbaiki bug tersebut memerlukan menonaktifkan konversi implisit ini. Konversi eksplisit ke string masih diizinkan.

Contoh

Jika kode Anda terlihat seperti ini:

var customTokenizerName = TokenizerName.Create("my_tokenizer"); 
var customTokenFilterName = TokenFilterName.Create("my_tokenfilter"); 
var customCharFilterName = CharFilterName.Create("my_charfilter"); 
 
var index = new Index();
index.Analyzers = new Analyzer[] 
{ 
    new CustomAnalyzer( 
        "my_analyzer",  
        customTokenizerName,  
        new[] { customTokenFilterName },  
        new[] { customCharFilterName }), 
}; 

Anda dapat mengubahnya menjadi ini untuk memperbaiki kesalahan build apa pun:

const string CustomTokenizerName = "my_tokenizer"; 
const string CustomTokenFilterName = "my_tokenfilter"; 
const string CustomCharFilterName = "my_charfilter"; 
 
var index = new Index();
index.Analyzers = new Analyzer[] 
{ 
    new CustomAnalyzer( 
        "my_analyzer",  
        CustomTokenizerName,  
        new TokenFilterName[] { CustomTokenFilterName },  
        new CharFilterName[] { CustomCharFilterName })
}; 

Anggota usang yang dihapus

Anda mungkin melihat kesalahan build yang terkait dengan metode atau properti yang ditandai sebagai usang dalam versi 2.0-preview dan kemudian dihapus di versi 3. Jika Anda mengalami kesalahan tersebut, berikut adalah cara mengatasinya:

  • Jika Anda menggunakan konstruktor ini: ScoringParameter(string name, string value), gunakan konstruktor ini sebagai gantinya: ScoringParameter(string name, IEnumerable<string> values)
  • Jika Anda menggunakan properti ScoringParameter.Value, gunakan properti ScoringParameter.Values atau metode ToString sebagai gantinya.
  • Jika Anda menggunakan SearchRequestOptions.RequestId properti , gunakan properti sebagai gantinya ClientRequestId .

Fitur pratinjau yang dihapus

Jika Anda meningkatkan dari versi 2.0-pratinjau ke versi 3, ketahuilah bahwa dukungan penguraian JSON dan CSV untuk Pengindeks Blob telah ditarik karena fitur ini masih dalam tahap pratinjau. Secara khusus, metode kelas IndexingParametersExtensions berikut telah dihapus:

  • ParseJson
  • ParseJsonArrays
  • ParseDelimitedTextFiles

Jika aplikasi Anda memiliki dependensi keras pada fitur-fitur ini, Anda tidak akan dapat meningkatkan ke versi 3 dari Azure Search .NET SDK. Anda dapat terus menggunakan versi 2.0-preview. Namun, perlu diingat bahwa kami tidak merekomendasikan penggunaan SDK pratinjau dalam aplikasi produksi. Fitur pratinjau hanya untuk evaluasi dan dapat berubah.

Kesimpulan

Jika Anda memerlukan detail lebih lanjut tentang cara menggunakan Azure Search .NET SDK, lihat panduan cara .NET .

Kami menyambut umpan balik Anda tentang SDK. Jika Anda mengalami masalah, jangan ragu untuk meminta bantuan kami di Stack Overflow. Jika menemukan bug, Anda dapat mengajukan masalah di repositori GitHub Azure .NET SDK. Pastikan untuk memulai judul masalah Anda dengan "[Azure Search]".

Terima kasih telah menggunakan Azure Search!