Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 ze starších verzí. Většinou jsou menší, takže změna kódu by měla vyžadovat jen minimální úsilí. Pokyny, jak změnit svůj kód pro použití nové verze SDK, najdete v krocích pro upgrade.
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 služby Azure Search podporuje několik verzí rozhraní REST API, včetně nejnovější verze. Verzi můžete dál používat, i když už není nejnovější, ale doporučujeme migrovat kód, abyste mohli používat nejnovější verzi. Při použití rozhraní REST API musíte v každém požadavku zadat verzi rozhraní API 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 upgradovaná 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:
- Vlastní analyzátory
- Podpora indexeru Azure Blob Storage a Azure Table Storage
- Přizpůsobení indexeru prostřednictvím mapování polí
- Podpora značek ETag umožňující bezpečnou souběžnou aktualizaci definic indexů, indexerů a zdrojů dat
- Podpora vytváření definic polí indexu deklarativně označením vaší třídě modelu a použitím nové
FieldBuildertřídy. - Podpora pro .NET Core a .NET Portable Profile 111
Postup upgradu
Nejprve aktualizujte referenční informace NuGet pro Microsoft.Azure.Search pomocí konzoly Správce balíčků NuGet nebo kliknutím pravým tlačítkem myši na odkazy na projekt a výběrem možnosti Spravovat balíčky NuGet... v sadě Visual Studio.
Jakmile NuGet stáhne nové balíčky a jejich závislosti, znovu sestavte projekt. Podle toho, jak je váš kód strukturován, se může úspěšně sestavit. Pokud ano, jste připraveni jít!
Pokud se sestavení nezdaří, měla by se zobrazit chyba sestavení podobná této:
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 tom, co způsobuje chybu a jak ji opravit, najdete v části Zásadní změny ve verzi 3 .
Mohou se zobrazit další upozornění na 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 tuto 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 všechny chyby sestavení, můžete v aplikaci provádět změny, abyste mohli využívat nové funkce, pokud chcete. Nové funkce v sadě SDK jsou podrobně popsány v části Co je nového ve verzi 3.
Zásadní změny ve verzi 3
Ve verzi 3 existuje malý počet zásadních změn, které můžou 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átila SearchIndexClient, ale ve verzi 2.0-preview byla změněna na ISearchIndexClient a tato změna se přenese do verze 3. To má podporovat zákazníky, kteří chtějí napodobit GetClient metodu pro jednotkové testy vrácením falešné implementace ISearchIndexClient.
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 toto:
ISearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
AnalyzerName, DataType a další už nejsou implicitně konvertibilní na řetězce.
V sadě .NET SDK služby Azure Search existuje mnoho typů, které jsou odvozeny od ExtensibleEnum. Dříve tyto typy byly všechny implicitně konvertibilní na typ string. Byla však zjištěna chyba v Object.Equals implementaci pro tyto třídy a oprava chyby vyžadovala zakázání 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 toto:
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ů
Mohou 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, jak je vyřešit:
- Pokud jste používali tento konstruktor:
ScoringParameter(string name, string value)použijte tento konstruktor:ScoringParameter(string name, IEnumerable<string> values) - Pokud jste používali vlastnost
ScoringParameter.Value, použijte místo toho vlastnostScoringParameter.Valuesnebo metoduToString. - Pokud jste používali vlastnost
SearchRequestOptions.RequestId, použijte místo toho vlastnostClientRequestId.
Odebrané funkce ve verzi 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 se odebrala, protože tyto funkce jsou stále ve verzi Preview. Konkrétně byly odebrány následující metody IndexingParametersExtensions třídy:
ParseJsonParseJsonArraysParseDelimitedTextFiles
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 však na paměti, že nedoporučujeme používat sady Preview SDK v produkčních aplikacích. Funkce ve verzi Preview jsou určené jenom pro vyhodnocení a můžou se změnit.
Závěr
Pokud potřebujete další podrobnosti o použití .NET SDK Azure Search, podívejte se na návod .NET.
Vítáme vaši zpětnou vazbu k SDK. Pokud narazíte na problémy, neváhejte nás požádat o pomoc na Stack Overflow. Pokud zjistíte chybu, můžete problém podat v úložišti GitHub sady Azure .NET SDK. Ujistěte se, že před názvem vašeho problému bude předpona "[Azure Search]".
Děkujeme, že jste používali Azure Search!