Upgrade na sadu .NET SDK služby Azure Search verze 3

Pokud používáte verzi 2.0-Preview nebo starší sadu .NET SDK služby Azure Search, pomůže vám tento článek upgradovat aplikaci tak, aby používala verzi 3.

Obecnější návod k sadě SDK včetně příkladů najdete v tématu Použití služby Azure Search z aplikace .NET.

Verze 3 sady .NET SDK služby Azure Search obsahuje některé změny z předchozích verzí. Většinou jsou menší, takže změna kódu by měla vyžadovat jen minimální úsilí. Pokyny ke změně kódu na používání nové verze sady SDK najdete v části Postup upgradu .

Poznámka

Pokud používáte verzi 1.0.2-Preview nebo starší, měli byste nejprve upgradovat na verzi 1.1 a pak upgradovat na verzi 3. Pokyny najdete v tématu Upgrade na sadu .NET SDK služby Azure Search verze 1.1 .

Vaše instance Azure Search podporuje několik verzí rozhraní REST API, včetně nejnovější verze. Verzi můžete dál používat, pokud už není nejnovější, ale doporučujeme migrovat kód tak, aby používal nejnovější verzi. Při použití rozhraní REST API je nutné zadat verzi rozhraní API v každém požadavku prostřednictvím parametru api-version. Při použití sady .NET SDK určuje verze sady SDK, kterou používáte, odpovídající verzi rozhraní REST API. Pokud používáte starší sadu SDK, můžete tento kód dál spouštět beze změn, i když je služba upgradována tak, aby podporovala novější verzi rozhraní API.

Novinky ve verzi 3

Verze 3 sady .NET SDK služby Azure Search cílí na nejnovější obecně dostupnou verzi rozhraní REST API služby Azure Search, konkrétně 2016-09-01. To umožňuje používat mnoho nových funkcí služby Azure Search z aplikace .NET, včetně následujících:

Postup upgradu

Nejprve aktualizujte referenční NuGet pro Microsoft.Azure.Search použití konzoly NuGet Správce balíčků nebo kliknutím pravým tlačítkem myši na odkazy na projekt a výběrem možnosti Spravovat NuGet balíčky... v Visual Studio.

Jakmile NuGet stáhnou nové balíčky a jejich závislosti, znovu sestavte projekt. V závislosti na struktuře kódu se může úspěšně znovu sestavit. Pokud ano, jste připravení jít!

Pokud se sestavení nezdaří, měla by se zobrazit chyba sestavení, jako je následující:

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

Dalším krokem je oprava této chyby sestavení. Podrobnosti o příčinách chyby a jeho opravě najdete v tématu Zásadní změny ve verzi 3 .

Může se zobrazit další upozornění sestavení týkající se zastaralých metod nebo vlastností. Upozornění budou obsahovat pokyny k tomu, co použít místo zastaralé funkce. Pokud například vaše aplikace vlastnost používá IndexingParameters.Base64EncodeKeys , měli byste se zobrazit upozornění, které říká: "This property is obsolete. Please create a field mapping using 'FieldMapping.Base64Encode' instead."

Jakmile opravíte chyby sestavení, můžete v aplikaci provádět změny, které vám umožní využívat nové funkce, pokud chcete. Nové funkce v sadě SDK jsou podrobně popsané v novinkách ve verzi 3.

Zásadní změny ve verzi 3

Ve verzi 3 existuje malý počet zásadních změn, které mohou kromě opětovného sestavení aplikace vyžadovat změny kódu.

Návratový typ Indexes.GetClient

Metoda Indexes.GetClient má nový návratový typ. Dříve se vrátil SearchIndexClient, ale tato změna se změnila na ISearchIndexClient verzi 2.0-Preview a tato změna se přenese do verze 3. To je podpora zákazníků, kteří chtějí napodobení GetClient metody pro testy jednotek vrácením napodobení ISearchIndexClientimplementace .

Příklad

Pokud váš kód vypadá takto:

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

Pokud chcete opravit případné chyby sestavení, můžete ho změnit na tento postup:

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

AnalyzerName, DataType a další už nejsou implicitně převést na řetězce.

V sadě .NET SDK služby Azure Search existuje mnoho typů, které jsou odvozeny od ExtensibleEnum. Dříve byly tyto typy všechny implicitně konvertibilní na typ string. V implementaci těchto tříd však byla zjištěna Object.Equals chyba a oprava chyby vyžadované zakázáním tohoto implicitního převodu. Explicitní převod na string je stále povolený.

Příklad

Pokud váš kód vypadá takto:

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

Pokud chcete opravit případné chyby sestavení, můžete ho změnit na tento postup:

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

Odebrání zastaralých členů

Může se zobrazit chyby sestavení související s metodami nebo vlastnostmi, které byly označeny jako zastaralé ve verzi 2.0-Preview a následně odebrány ve verzi 3. Pokud narazíte na takové chyby, tady je postup jejich řešení:

  • Pokud jste používali tento konstruktor: ScoringParameter(string name, string value)použijte tento konstruktor: ScoringParameter(string name, IEnumerable<string> values)
  • Pokud jste tuto vlastnost používali ScoringParameter.Value , použijte ScoringParameter.Values místo toho vlastnost nebo metodu ToString .
  • Pokud jste tuto vlastnost používali SearchRequestOptions.RequestId , použijte místo toho ClientRequestId vlastnost.

Odebrání funkcí preview

Pokud upgradujete z verze 2.0 preview na verzi 3, mějte na paměti, že podpora parsování JSON a CSV pro indexery objektů blob byla odebrána, protože tyto funkce jsou stále ve verzi Preview. Konkrétně byly odebrány následující metody IndexingParametersExtensions třídy:

  • ParseJson
  • ParseJsonArrays
  • ParseDelimitedTextFiles

Pokud má vaše aplikace pevnou závislost na těchto funkcích, nebudete moct upgradovat na verzi 3 sady .NET SDK služby Azure Search. Můžete dál používat verzi 2.0-Preview. Mějte ale na paměti, že nedoporučujeme používat sady SDK ve verzi Preview v produkčních aplikacích. Funkce preview jsou určené jenom pro zkušební verzi a můžou se změnit.

Závěr

Pokud potřebujete další podrobnosti o používání sady .NET SDK služby Azure Search, podívejte se na postupy .NET.

Vítáme vaši zpětnou vazbu k sadě SDK. Pokud narazíte na problémy, můžete nás požádat o pomoc se službou Stack Overflow. Pokud zjistíte chybu, můžete problém podat v úložišti Azure .NET SDK GitHub. Nezapomeňte předponu názvu vašeho problému předponou [Azure Search].

Děkujeme vám za používání služby Azure Search!