Udostępnij za pośrednictwem


Uaktualnianie do zestawu .NET SDK usługi Azure Search w wersji 3

Jeśli używasz wersji 2.0 lub starszej zestawu SDK platformy .NET usługi Azure Search, ten artykuł pomoże Ci uaktualnić aplikację do korzystania z wersji 3.

Aby uzyskać bardziej ogólny przewodnik po zestawie SDK, w tym przykłady, zobacz How to use Azure Search from a .NET Application (Jak używać usługi Azure Search z poziomu aplikacji platformy .NET).

Wersja 3 zestawu .NET SDK usługi Azure Search zawiera pewne zmiany z wcześniejszych wersji. Są one głównie niewielkie, więc zmiana kodu powinna wymagać tylko minimalnego nakładu pracy. Zobacz Kroki uaktualniania, aby uzyskać instrukcje dotyczące zmiany kodu w celu korzystania z nowej wersji zestawu SDK.

Uwaga

Jeśli używasz wersji 1.0.2-preview lub starszej, najpierw uaktualnij ją do wersji 1.1, a następnie uaktualnij ją do wersji 3. Aby uzyskać instrukcje, zobacz Uaktualnianie do zestawu .NET SDK usługi Azure Search w wersji 1.1 .

Wystąpienie usługi Azure usługa wyszukiwania obsługuje kilka wersji interfejsu API REST, w tym najnowszą. Możesz nadal używać wersji, gdy nie jest już najnowsza, ale zalecamy przeprowadzenie migracji kodu do korzystania z najnowszej wersji. W przypadku korzystania z interfejsu API REST należy określić wersję interfejsu API w każdym żądaniu za pomocą parametru api-version. W przypadku korzystania z zestawu .NET SDK używana wersja zestawu SDK określa odpowiednią wersję interfejsu API REST. Jeśli używasz starszego zestawu SDK, możesz kontynuować uruchamianie tego kodu bez zmian, nawet jeśli usługa zostanie uaktualniona do obsługi nowszej wersji interfejsu API.

Co nowego w wersji 3

Wersja 3 zestawu .NET SDK usługi Azure Search jest przeznaczona dla najnowszej ogólnie dostępnej wersji interfejsu API REST usługi Azure Search, a konkretnie 2016-09-01. Dzięki temu można korzystać z wielu nowych funkcji usługi Azure Search z poziomu aplikacji .NET, w tym następujących:

  • Analizatory niestandardowe
  • obsługa indeksatora Azure Blob Storage i usługi Azure Table Storage
  • Dostosowywanie indeksatora za pomocą mapowań pól
  • Obsługa elementów ETags w celu umożliwienia bezpiecznego jednoczesnego aktualizowania definicji indeksów, indeksatorów i źródeł danych
  • Obsługa definicji pól indeksu deklaratywnie przez dekorowanie klasy modelu i użycie nowej FieldBuilder klasy.
  • Obsługa programu .NET Core i przenośnego profilu platformy .NET 111

Kroki uaktualniania

Najpierw zaktualizuj odwołanie NuGet do Microsoft.Azure.Search użycia konsoli NuGet Menedżer pakietów lub klikając prawym przyciskiem myszy odwołania do projektu i wybierając pozycję "Zarządzaj pakietami NuGet..." w Visual Studio.

Po NuGet pobrano nowe pakiety i ich zależności, skompiluj projekt. W zależności od tego, jak kod jest ustrukturyzowany, może zostać pomyślnie odbudowany. Jeśli tak, możesz przystąpić do pracy!

Jeśli kompilacja zakończy się niepowodzeniem, powinien zostać wyświetlony błąd kompilacji podobny do następującego:

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

Następnym krokiem jest naprawienie tego błędu kompilacji. Zobacz Zmiany powodujące niezgodność w wersji 3, aby uzyskać szczegółowe informacje na temat przyczyn błędu i sposobu jego naprawy.

Mogą pojawić się dodatkowe ostrzeżenia kompilacji związane z przestarzałymi metodami lub właściwościami. Ostrzeżenia będą zawierać instrukcje dotyczące używania funkcji zamiast przestarzałej funkcji. Jeśli na przykład aplikacja używa IndexingParameters.Base64EncodeKeys właściwości, należy uzyskać ostrzeżenie informujące o tym, że "This property is obsolete. Please create a field mapping using 'FieldMapping.Base64Encode' instead."

Po usunięciu błędów kompilacji możesz wprowadzić zmiany w aplikacji, aby skorzystać z nowych funkcji, jeśli chcesz. Nowe funkcje w zestawie SDK zostały szczegółowo opisane w temacie Co nowego w wersji 3.

Zmiany powodujące niezgodność w wersji 3

Istnieje niewielka liczba zmian powodujących niezgodność w wersji 3, które mogą wymagać zmian kodu oprócz ponownego kompilowania aplikacji.

Indexes.GetClient zwracany typ

Metoda Indexes.GetClient ma nowy typ zwracany. Wcześniej zwróciła SearchIndexClientwartość , ale została zmieniona na ISearchIndexClient w wersji 2.0-preview i ta zmiana zostanie zmieniona na wersję 3. Jest to obsługa klientów, którzy chcą wyśmiewać metodę GetClient testów jednostkowych, zwracając pozorną implementację ISearchIndexClientprogramu .

Przykład

Jeśli kod wygląda następująco:

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

Możesz go zmienić, aby naprawić wszelkie błędy kompilacji:

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

AnalyzerName, DataType i inne nie są już niejawnie konwertowane na ciągi

Istnieje wiele typów w zestawie SDK platformy .NET usługi Azure Search, które pochodzą z ExtensibleEnumelementu . Wcześniej wszystkie te typy były niejawnie konwertowane na typ string. Jednak w implementacji Object.Equals tych klas wykryto usterkę i naprawiono usterkę wymaganą do wyłączenia tej niejawnej konwersji. Jawna konwersja na string jest nadal dozwolona.

Przykład

Jeśli kod wygląda następująco:

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

Możesz go zmienić, aby naprawić wszelkie błędy kompilacji:

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

Usunięto przestarzałe elementy członkowskie

Mogą pojawić się błędy kompilacji związane z metodami lub właściwościami oznaczonymi jako przestarzałe w wersji 2.0-preview, a następnie usunięte w wersji 3. Jeśli wystąpią takie błędy, oto jak je rozwiązać:

  • Jeśli używasz tego konstruktora: ScoringParameter(string name, string value)użyj następującego polecenia: ScoringParameter(string name, IEnumerable<string> values)
  • Jeśli używasz ScoringParameter.Value właściwości, użyj ScoringParameter.Values właściwości lub ToString metody .
  • Jeśli używasz SearchRequestOptions.RequestId właściwości , użyj ClientRequestId właściwości .

Usunięto funkcje w wersji zapoznawczej

Jeśli uaktualniasz wersję 2.0-preview do wersji 3, pamiętaj, że obsługa analizowania plików JSON i CSV dla indeksatorów obiektów blob została usunięta, ponieważ te funkcje są nadal w wersji zapoznawczej. W szczególności usunięto następujące metody IndexingParametersExtensions klasy:

  • ParseJson
  • ParseJsonArrays
  • ParseDelimitedTextFiles

Jeśli aplikacja ma twardą zależność od tych funkcji, nie będzie można uaktualnić do wersji 3 zestawu SDK platformy .NET usługi Azure Search. Możesz nadal używać wersji 2.0-preview. Należy jednak pamiętać, że nie zalecamy używania zestawów SDK w wersji zapoznawczej w aplikacjach produkcyjnych. Funkcje w wersji zapoznawczej są przeznaczone tylko do oceny i mogą ulec zmianie.

Podsumowanie

Jeśli potrzebujesz dodatkowych informacji na temat korzystania z zestawu .NET SDK usługi Azure Search, zobacz instrukcje dotyczące platformy .NET.

Z zadowoleniem przyjmujemy Twoją opinię na temat zestawu SDK. Jeśli napotkasz problemy, możesz poprosić nas o pomoc w witrynie Stack Overflow. Jeśli znajdziesz usterkę, możesz zgłosić problem w repozytorium azure .NET SDK GitHub. Pamiętaj o prefiksie tytułu problemu o nazwie "[Azure Search]".

Dziękujemy za korzystanie z usługi Azure Search!