Sdílet prostřednictvím


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 internalkonstruktor 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 a DocumentSearchResult<T> zděděno z DocumentSearchResultBase
  • DocumentSuggestResult a DocumentSuggestResult<T> zděděno z DocumentSuggestResultBase
  • IndexAction a IndexAction<T> zděděno z IndexActionBase
  • IndexBatch a IndexBatch<T> zděděno z IndexBatchBase
  • SearchResult a SearchResult<T> zděděno z SearchResultBase
  • SuggestResult a SuggestResult<T> zděděno z SuggestResultBase

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, DataTypea 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 AutocompleteModeAutocompleteParameters již není nullable. Pokud máte kód, který tuto vlastnost nullpř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.Uploadtovárny , IndexAction.Mergeatd.

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é" Searchnebo rozhraní API, která vracejí instance typu Document, mějte na paměti, že nyní deserializují prázdné pole JSON místo object[]string[].GetSuggest

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!