Frissítés az Azure Search .NET SDK 3-ra

Ha az Azure Search .NET SDK 2.0-s vagy újabb verzióját használja, ez a cikk segít frissíteni az alkalmazást a 3- es verzió használatára.

Az SDK általánosabb, példákat is tartalmazó bemutatása: Az Azure Search használata .NET-alkalmazásból.

Az Azure Search .NET SDK 3. verziója a korábbi verziók módosításait tartalmazza. Ezek többnyire kisebbek, ezért a kód módosítása csak minimális erőfeszítést igényel. A kód új SDK-verzió használatára való módosítására vonatkozó útmutatásért tekintse meg frissítésének lépéseit.

Megjegyzés

Ha az 1.0.2-es vagy régebbi verziót használja, először frissítsen az 1.1-es verzióra, majd frissítsen a 3-ra. Útmutatásért tekintse meg Frissítés az Azure Search .NET SDK 1.1-es verziójára.

Az Azure Search-szolgáltatáspéldány számos REST API-verziót támogat, köztük a legújabbat is. Továbbra is használhat verziót, ha már nem a legújabb, de javasoljuk, hogy migrálja a kódot a legújabb verzió használatára. A REST API használatakor minden kérelemben meg kell adnia az API-verziót az API-verzió paraméterrel. A .NET SDK használatakor a használt SDK verziója határozza meg a REST API megfelelő verzióját. Ha régebbi SDK-t használ, akkor is futtathatja a kódot módosítás nélkül, még akkor is, ha a szolgáltatást frissítjük egy újabb API-verzió támogatására.

A 3. verzió újdonságai

Az Azure Search .NET SDK 3-as verziója az Azure Search REST API legújabb általánosan elérhető verzióját célozza meg, konkrétan a 2016-09-01-es verziót. Ez lehetővé teszi az Azure Search számos új funkciójának használatát egy .NET-alkalmazásból, beleértve a következőket:

  • Egyéni elemzők
  • Azure Blob Storage és Azure Table Storage indexelő támogatása
  • Indexelő testreszabása mezőleképezésekkel
  • ETags-támogatás az indexdefiníciók, indexelők és adatforrások biztonságos egyidejű frissítésének engedélyezéséhez
  • Az indexmező-definíciók deklaratív létrehozásának támogatása a modellosztály jelölésével és az új FieldBuilder osztály használatával.
  • A .NET Core és a .NET Portable Profile 111 támogatása

A frissítés lépései

Először is frissítse a Microsoft.Azure.Search NuGet hivatkozást a NuGet csomagkezelő konzol használatával, vagy kattintson a jobb gombbal a projekt hivatkozásaira, és válassza a "NuGet-csomagok kezelése..." lehetőséget a Visual Studio-ban.

Miután a NuGet letöltötte az új csomagokat és azok függőségeit, építse újra a projektet. A kód felépítésétől függően a kód újraépítése sikeres lehet. Ha igen, készen áll az indulásra!

Ha a build sikertelen, az alábbihoz hasonló buildelési hibát kell látnia:

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?)

A következő lépés a buildelési hiba kijavítása. Azokkal a részletekkel kapcsolatban, hogy mi okozza a hibát és hogyan lehet kijavítani, lásd a A 3-as verzió kompatibilitástörő változásait ismertető leírást.

Az elavult metódusokkal vagy tulajdonságokkal kapcsolatos további összeállítási figyelmeztetések is megjelenhetnek. A figyelmeztetések az elavult funkció helyett a használatukra vonatkozó utasításokat is tartalmazzák. Ha például az alkalmazás a IndexingParameters.Base64EncodeKeys tulajdonságot használja, figyelmeztetést kell kapnia, amely szerint "This property is obsolete. Please create a field mapping using 'FieldMapping.Base64Encode' instead."

Miután kijavított minden buildelési hibát, módosíthatja az alkalmazást, hogy igény szerint kihasználhassa az új funkciókat. Az SDK új funkcióit részletezi a A 3. verzió újdonságai.

Kompatibilitástörő változások a 3. verzióban

A 3. verzióban kevés olyan kompatibilitástörő változás van, amely az alkalmazás újraépítése mellett kódmódosítást is igényelhet.

"Indexes.GetClient" visszatérési típus

A Indexes.GetClient metódus új visszatérési típussal rendelkezik. Korábban SearchIndexClientadta vissza, de ez megváltozott és ISearchIndexClient lett a 2.0-s előzetes verzióban, és ez a módosítás átöröklődik a 3. verzióra. Ez a támogatás azoknak az ügyfeleknek szól, akik az GetClient módszert kívánják szimulálni egységtesztekhez egy ISearchIndexClientmock-implementációval.

Példa

Ha a kód így néz ki:

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

A buildelési hibák kijavításához módosítsa a következőre:

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

Az AnalyzerName, a DataType és mások többé nem konvertálhatók implicit módon sztringekké

Az Azure Search .NET SDK-ben számos típus származik ExtensibleEnum. Korábban ezek a típusok implicit módon konvertálhatók stringtípussá. Az osztályok Object.Equals implementációjában azonban hiba lépett fel, és a hiba kijavításához le kellett tiltani ezt az implicit átalakítást. A string való explicit átalakítás továbbra is engedélyezett.

Példa

Ha a kód így néz ki:

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 }), 
}; 

A buildelési hibák kijavításához módosítsa a következőre:

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 })
}; 

Elavult tagok eltávolítása

A 2.0-s verzióban elavultként megjelölt és a 3. verzióban eltávolított metódusokkal vagy tulajdonságokkal kapcsolatos összeállítási hibák jelentkezhetnek. Ha ilyen hibákba ütközik, az alábbiak szerint háríthatja el őket:

  • Ha ezt a konstruktort használta: ScoringParameter(string name, string value), használja inkább ezt: ScoringParameter(string name, IEnumerable<string> values)
  • Ha a ScoringParameter.Value tulajdonságot használta, használja inkább a ScoringParameter.Values tulajdonságot vagy a ToString metódust.
  • Ha a SearchRequestOptions.RequestId tulajdonságot használta, használja inkább a ClientRequestId tulajdonságot.

Eltávolított előzetes verziójú funkciók

Ha a 2.0-s verzióról a 3-as verzióra frissít, vegye figyelembe, hogy a Blob Indexerek JSON- és CSV-elemzési támogatása el lett távolítva, mivel ezek a funkciók még előzetes verzióban vannak. A IndexingParametersExtensions osztály alábbi módszereit távolítottuk el:

  • ParseJson
  • ParseJsonArrays
  • ParseDelimitedTextFiles

Ha az alkalmazás kemény függőségben van ezekhez a funkciókhoz, nem fog tudni frissíteni az Azure Search .NET SDK 3-ra. Továbbra is használhatja a 2.0-s verzió előzetes verzióját. Ne feledje azonban, hogy nem javasoljuk az előzetes verziójú SDK-k használatát az éles alkalmazásokban. Az előzetes verziójú funkciók csak kiértékelhetők, és változhatnak.

Következtetés

Ha további részletekre van szüksége az Azure Search .NET SDK használatával kapcsolatban, tekintse meg a .NET útmutató.

Örömmel vesszük visszajelzését az SDK-val kapcsolatban. Ha problémákat tapasztal, kérjen segítséget Stack Overflow. Ha hibát talál, az Azure .NET SDK GitHub-adattárában is elküldheti a problémát. Győződjön meg arról, hogy a probléma címét az "[Azure Search]" előtaggal használja.

Köszönjük, hogy az Azure Search szolgáltatást használta!