Upgrade na sadu .NET SDK služby Azure Search verze 9
Pokud používáte verzi 7.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 9.
Poznámka
Pokud chcete použít verzi 8.0-Preview k vyhodnocení funkcí, které ještě nejsou obecně dostupné, můžete také postupovat podle pokynů v tomto článku a upgradovat na verzi 8.0-Preview z předchozích verzí.
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 9 sady .NET SDK služby Azure Search obsahuje mnoho změn z předchozích verzí. Některé z těchto změn jsou zásadní, ale měly by vyžadovat pouze relativně menší změny kódu. 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 4.0 preview nebo starší, měli byste nejprve upgradovat na verzi 5 a pak upgradovat na verzi 9. Pokyny najdete v tématu Upgrade na sadu .NET SDK služby Azure Search verze 5 .
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 upgradovaná tak, aby podporovala novější verzi rozhraní API.
Novinky ve verzi 9
Verze 9 sady Azure Search .NET SDK cílí na verzi 2019-05-06 rozhraní REST API služby Azure Search s následujícími funkcemi:
- Rozšíření umělé inteligence je schopnost extrahovat text z obrázků, objektů blob a dalších nestrukturovaných zdrojů dat – rozšíření obsahu tak, aby bylo možné ho prohledávat v indexu Služby Azure Search.
- Podpora složitých typů umožňuje modelovat téměř jakoukoli vnořenou strukturu JSON v indexu Služby Azure Search.
- Automatické dokončování poskytuje alternativu k rozhraní API Pro návrh implementace chování při hledání jako typ. Automaticky dokončete slovo nebo frázi, které uživatel právě píše.
- Režim parsování JsonLines, součást indexování objektů blob, vytvoří jeden vyhledávací dokument na entitu JSON, která je oddělená novým řádekem.
Nové funkce preview ve verzi 8.0-Preview
Verze 8.0-Preview sady Azure Search .NET SDK cílí na rozhraní API verze 2017-11-11-Preview. Tato verze zahrnuje všechny stejné funkce verze 9 a navíc:
- Šifrovací klíče spravované zákazníkem pro neaktivní neaktivní neaktivní šifrování na straně služby je nová funkce Preview. Kromě integrovaného šifrování neaktivních uložených dat spravovaných Microsoftem můžete použít další vrstvu šifrování, kde jste jediným vlastníkem klíčů.
Postup upgradu
Nejprve aktualizujte NuGet reference 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áhne nové balíčky a jejich závislosti, znovu sestavte projekt. V závislosti na tom, jak je kód strukturovaný, může se úspěšně znovu sestavit. Pokud ano, jste připravení jít!
Pokud se sestavení nezdaří, budete muset opravit každou chybu sestavení. Podrobnosti o řešení jednotlivých potenciálních chyb sestavení najdete v tématu Zásadní změny ve verzi 9 .
Může se zobrazit další upozornění sestavení související se zastaralými metodami nebo vlastnostmi. Upozornění budou obsahovat pokyny k tomu, co používat místo zastaralé funkce. Pokud například vaše aplikace tuto vlastnost používá DataSourceType.DocumentDb
, měli byste zobrazit upozornění, že tento člen je zastaralý. Místo toho použijte CosmosDb.
Jakmile opravíte chyby nebo upozornění sestavení, můžete v aplikaci provádět změny, abyste mohli využít nové funkce, pokud chcete. Nové funkce v sadě SDK jsou podrobně popsané ve verzi 9.
Zásadní změny ve verzi 9
Ve verzi 9 existuje několik zásadních změn, které mohou kromě opětovného sestavení aplikace vyžadovat změny kódu.
Poznámka
Níže uvedený seznam změn není vyčerpávající. Některé změny pravděpodobně nebudou mít za následek chyby sestavení, ale technicky způsobující chybu, protože přeruší binární kompatibilitu se sestaveními, která závisí na dřívějších verzích sestavení sady .NET SDK služby Azure Search. Tyto změny nejsou uvedené níže. Znovu sestavte aplikaci při upgradu na verzi 9, abyste se vyhnuli problémům s binární kompatibilitou.
Neměnné vlastnosti
Veřejné vlastnosti několika tříd modelu jsou nyní neměnné. Pokud potřebujete vytvořit vlastní instance těchto tříd pro testování, můžete použít nové parametrizované konstruktory:
AutocompleteItem
DocumentSearchResult
DocumentSuggestResult
FacetResult
SearchResult
SuggestResult
Změny v poli
Třída Field
se teď změnila, protože může také představovat složitá pole.
Nyní lze použít následující bool
vlastnosti:
IsFilterable
IsFacetable
IsSearchable
IsSortable
IsRetrievable
IsKey
Důvodem je to, že tyto vlastnosti teď musí být null
v případě složitých polí. Pokud máte kód, který tyto vlastnosti čte, musí být připraven k zpracování null
. Mějte na paměti, že všechny ostatní vlastnosti Field
vždy byly a stále mají hodnotu null, a některé z nich budou null
také v případě složitých polí – konkrétně následující:
Analyzer
SearchAnalyzer
IndexAnalyzer
SynonymMaps
Byl proveden internal
konstruktor Field
bez parametrů . Od této chvíle každý Field
vyžaduje explicitní název a datový typ v době konstrukce.
Zjednodušené typy dávek a výsledků
Ve verzi 7.0 preview a starších verzích byly různé třídy, které zapouzdřují skupiny dokumentů, strukturovány do paralelních hierarchií tříd:
-
DocumentSearchResult
aDocumentSearchResult<T>
zděděno zDocumentSearchResultBase
-
DocumentSuggestResult
aDocumentSuggestResult<T>
zděděno zDocumentSuggestResultBase
-
IndexAction
aIndexAction<T>
zděděno zIndexActionBase
-
IndexBatch
aIndexBatch<T>
zděděno zIndexBatchBase
-
SearchResult
aSearchResult<T>
zděděno zSearchResultBase
-
SuggestResult
aSuggestResult<T>
zděděno zSuggestResultBase
Odvozené typy bez obecného parametru typu byly určeny k použití v "dynamicky typed" scénářích a předpokládat použití Document
typu.
Počínaje verzí 8.0-Preview byly všechny základní třídy a ne generické odvozené třídy odebrány. Pro dynamicky napsané scénáře můžete použít IndexBatch<Document>
, DocumentSearchResult<Document>
a tak dále.
Odebrání extensibleEnum
Základní ExtensibleEnum
třída byla odebrána. Všechny třídy odvozené z něj jsou nyní struktury, například AnalyzerName
, DataType
a DataSourceType
například. Jejich Create
metody byly také odebrány. Můžete jenom odebrat volání Create
, protože tyto typy jsou implicitně konvertovat z řetězců. Pokud to vede k chybám kompilátoru, můžete operátor převodu explicitně vyvolat prostřednictvím přetypování, aby se rozlily nejednoznačné typy. Kód můžete například změnit takto:
var index = new Index()
{
Fields = new[]
{
new Field("id", DataType.String) { IsKey = true },
new Field("message", AnalyzerName.Create("my_email_analyzer")) { IsSearchable = true }
},
...
}
měli změnit na:
var index = new Index()
{
Fields = new[]
{
new Field("id", DataType.String) { IsKey = true },
new Field("message", (AnalyzerName)"my_email_analyzer") { IsSearchable = true }
},
...
}
Vlastnosti, které obsahují volitelné hodnoty těchto typů, jsou nyní explicitně zadány jako null, aby byly nadále volitelné.
Odebrání facetResults a HitHighlights
Třídy FacetResults
byly HitHighlights
odebrány. Výsledky fazety jsou nyní zadány jako IDictionary<string, IList<FacetResult>>
a hity jako IDictionary<string, IList<string>>
. Rychlý způsob, jak vyřešit chyby sestavení zavedené touto změnou, je přidat using
aliasy v horní části každého souboru, který používá odebrané typy. Příklad:
using FacetResults = System.Collections.Generic.IDictionary<string, System.Collections.Generic.IList<Models.FacetResult>>;
using HitHighlights = System.Collections.Generic.IDictionary<string, System.Collections.Generic.IList<string>>;
Změna na mapu synonym
Konstruktor SynonymMap
už nemá enum
parametr pro SynonymMapFormat
. Tento výčt měl pouze jednu hodnotu, a proto byl redundantní. Pokud se v důsledku toho zobrazí chyby sestavení, jednoduše odeberte odkazy na SynonymMapFormat
parametr.
Různé změny třídy modelu
Vlastnost AutocompleteMode
AutocompleteParameters
již není nullable. Pokud máte kód, který tuto vlastnost null
přiřadí, můžete ji jednoduše odebrat a vlastnost se automaticky inicializuje na výchozí hodnotu.
Pořadí parametrů konstruktoru IndexAction
se teď změnilo, když je tento konstruktor automaticky vygenerován. Místo použití konstruktoru doporučujeme používat metody IndexAction.Upload
továrny , IndexAction.Merge
atd.
Odebrání funkcí preview
Pokud upgradujete z verze 8.0 preview na verzi 9, mějte na paměti, že šifrování pomocí klíčů spravovaných zákazníkem bylo odebráno, protože tato funkce je stále ve verzi Preview. Konkrétně byly EncryptionKey
odebrány vlastnosti Index
a SynonymMap
byly odebrány.
Pokud má vaše aplikace pevnou závislost na této funkci, nebudete moct upgradovat na verzi 9 sady .NET SDK služby Azure Search. Můžete dál používat verzi 8.0-Preview. Mějte ale 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 měnit.
Poznámka
Pokud jste vytvořili šifrované indexy nebo mapy synonym pomocí verze 8.0-Preview sady SDK, budete je moct dál používat a upravovat jejich definice pomocí verze 9 sady SDK, aniž by to mělo nepříznivý vliv na stav šifrování. Verze 9 sady SDK neodesílá encryptionKey
vlastnost do rozhraní REST API a v důsledku toho rozhraní REST API nezmění stav šifrování prostředku.
Změna chování při načítání dat
Pokud používáte "dynamicky napsané" Search
nebo rozhraní API, která vracejí instance typu Document
, mějte na paměti, že nyní deserializují prázdné pole JSON místo object[]
string[]
.Get
Suggest
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, neváhejte nás požádat o pomoc se službou Stack Overflow. Pokud zjistíte chybu, můžete problém vytvořit v úložišti azure .NET SDK GitHub. Nezapomeňte předponu názvu vašeho problému pojmem [Azure Search].
Děkujeme, že jste používali Službu Azure Search!