Upgrade para Azure Search .NET SDK versão 9
Se estiver a utilizar a versão 7.0 pré-visualização ou mais antiga do Azure Search .NET SDK, este artigo irá ajudá-lo a atualizar a sua aplicação para utilizar a versão 9.
Nota
Se pretender utilizar a versão 8.0-pré-visualização para avaliar funcionalidades que não estão geralmente disponíveis ainda, também pode seguir as instruções deste artigo para atualizar para 8.0-pré-visualização de versões anteriores.
Para uma passagem mais geral do SDK, incluindo exemplos, consulte Como utilizar a Azure Search a partir de uma aplicação .NET.
A versão 9 do Azure Search .NET SDK contém muitas alterações em versões anteriores. Algumas destas alterações estão a quebrar alterações, mas só devem requerer alterações relativamente pequenas no seu código. Consulte passos para atualizar para obter instruções sobre como alterar o seu código para utilizar a nova versão SDK.
Nota
Se estiver a utilizar a versão 4.0 pré-visualização ou mais antiga, deve atualizar para a versão 5 primeiro e, em seguida, atualizar para a versão 9. Consulte a atualização para a versão 5 da Azure Search .NET SDK para obter instruções.
O seu Azure Serviço de pesquisa exemplo suporta várias versões REST API, incluindo a mais recente. Pode continuar a utilizar uma versão quando já não é a mais recente, mas recomendamos que emigre o seu código para utilizar a versão mais recente. Ao utilizar a API REST, deve especificar a versão API em cada pedido através do parâmetro versão API. Ao utilizar o .NET SDK, a versão do SDK que está a utilizar determina a versão correspondente da API REST. Se estiver a utilizar um SDK mais antigo, pode continuar a executar esse código sem alterações, mesmo que o serviço seja atualizado para suportar uma versão API mais recente.
Novidades na versão 9
A versão 9 do Azure Search .NET SDK tem como alvo a versão 2019-05-06 da Azure Search REST API, com as seguintes funcionalidades:
- O enriquecimento de IA é a capacidade de extrair texto de imagens, bolhas e outras fontes de dados não estruturadas - enriquecendo o conteúdo para torná-lo mais pes pescável num índice de Pesquisa de Azure.
- O suporte para tipos complexos permite-lhe modelo quase qualquer estrutura JSON aninhada num índice de Pesquisa de Azure.
- O autocomplete fornece uma alternativa à API sugestiva para implementar comportamentos de pesquisa à sua maneira. "Finisha" automaticamente a palavra ou frase que um utilizador está atualmente a escrever.
- O modo de análise JsonLines, parte da indexação de blob, cria um documento de pesquisa por entidade JSON que é separado por uma nova linha.
Novas funcionalidades de pré-visualização na versão 8.0-pré-visualização
Versão 8.0-pré-visualização do Azure Search .NET SDK visa a versão API 2017-11-11-Preview. Esta versão inclui todas as mesmas funcionalidades da versão 9, mais:
- As chaves de encriptação geridas pelo cliente para encriptação do lado do serviço em repouso é uma nova funcionalidade de pré-visualização. Além da encriptação incorporada em repouso gerida pela Microsoft, pode aplicar uma camada adicional de encriptação onde é o único proprietário das chaves.
Passos para atualizar
Em primeiro lugar, atualize a sua referência NuGet para Microsoft.Azure.Search
utilizar a Consola nuGet Gestor de Pacotes ou clicando à direita nas referências do seu projeto e selecionando "Gerir pacotes nuget..." em Visual Studio.
Assim que o NuGet tiver descarregado os novos pacotes e as suas dependências, reconstrua o seu projeto. Dependendo da estrutura do seu código, pode reconstruir com sucesso. Se sim, está pronto para ir!
Se a sua construção falhar, terá de corrigir cada erro de construção. Consulte alterações de Breaking na versão 9 para obter mais detalhes sobre como resolver cada potencial erro de construção.
Pode ver avisos adicionais de construção relacionados com métodos ou propriedades obsoletos. As advertências incluirão instruções sobre o que usar em vez da função prevada. Por exemplo, se a sua aplicação usar o DataSourceType.DocumentDb
imóvel, deve receber um aviso que diz "Este membro está precotado. Use o CosmosDb em vez disso".
Uma vez corrigido quaisquer erros ou avisos de construção, pode escoar alterações na sua aplicação para tirar partido de novas funcionalidades, se desejar. As novas funcionalidades no SDK são detalhadas no que há de novo na versão 9.
Quebrando mudanças na versão 9
Existem várias alterações na versão 9 que podem exigir alterações de código para além da reconstrução da sua aplicação.
Nota
A lista de alterações abaixo não é exaustiva. Algumas alterações provavelmente não resultarão em erros de construção, mas estão tecnicamente a quebrar uma vez que quebram a compatibilidade binária com conjuntos que dependem de versões anteriores dos conjuntos Azure Search .NET SDK. Tais alterações não constam da lista abaixo. Por favor, reconstrua a sua aplicação ao atualizar para a versão 9 para evitar quaisquer problemas de compatibilidade binária.
Propriedades imutáveis
As propriedades públicas de várias classes modelo são agora imutáveis. Se precisar de criar instâncias personalizadas destas classes para testes, pode utilizar os novos construtores parametrizados:
AutocompleteItem
DocumentSearchResult
DocumentSuggestResult
FacetResult
SearchResult
SuggestResult
Alterações no Campo
A Field
classe mudou agora que também pode representar campos complexos.
As seguintes bool
propriedades são agora anuladas:
IsFilterable
IsFacetable
IsSearchable
IsSortable
IsRetrievable
IsKey
Isto porque estas propriedades devem agora ser null
no caso de campos complexos. Se tiver um código que leia estas propriedades, tem de estar preparado para manusear null
. Note que todas as outras propriedades Field
sempre foram e continuam a ser anulados, e algumas delas também serão null
no caso de campos complexos - especificamente o seguinte:
Analyzer
SearchAnalyzer
IndexAnalyzer
SynonymMaps
O construtor sem parâmetros Field
foi feito internal
. A partir de agora, cada Field
um requer um nome explícito e um tipo de dados no momento da construção.
Tipos de lote e resultados simplificados
Na versão 7.0-pré-visualização e anterior, as várias classes que encapsulam grupos de documentos foram estruturadas em hierarquias de classe paralelas:
-
DocumentSearchResult
eDocumentSearchResult<T>
herdado deDocumentSearchResultBase
-
DocumentSuggestResult
eDocumentSuggestResult<T>
herdado deDocumentSuggestResultBase
-
IndexAction
eIndexAction<T>
herdado deIndexActionBase
-
IndexBatch
eIndexBatch<T>
herdado deIndexBatchBase
-
SearchResult
eSearchResult<T>
herdado deSearchResultBase
-
SuggestResult
eSuggestResult<T>
herdado deSuggestResultBase
Os tipos derivados sem um parâmetro de tipo genérico destinavam-se a ser utilizados em cenários "de tipo dinâmico" e assumiam a utilização do Document
tipo.
Começando pela versão 8.0-pré-visualização, as classes base e as classes derivadas não genéricas foram todas removidas. Para cenários de tipo dinâmico, pode usar IndexBatch<Document>
, DocumentSearchResult<Document>
e assim por diante.
ExtensibleEnum removido
A ExtensibleEnum
classe base foi removida. Todas as classes que dele derivaram são agora structs, como AnalyzerName
, DataType
e DataSourceType
por exemplo. Os seus Create
métodos também foram removidos. Basta remover chamadas para uma Create
vez que estes tipos são implicitamente descapotáveis das cordas. Se isso resultar em erros de compilador, pode invocar explicitamente o operador de conversão através da fundição para tipos de desambiguados. Por exemplo, pode alterar códigos como este:
var index = new Index()
{
Fields = new[]
{
new Field("id", DataType.String) { IsKey = true },
new Field("message", AnalyzerName.Create("my_email_analyzer")) { IsSearchable = true }
},
...
}
para este:
var index = new Index()
{
Fields = new[]
{
new Field("id", DataType.String) { IsKey = true },
new Field("message", (AnalyzerName)"my_email_analyzer") { IsSearchable = true }
},
...
}
As propriedades que detinham valores opcionais deste tipo são agora explicitamente digitadas como nulas, pelo que continuam a ser opcionais.
FacetResults removidos e hitHighlights
As FacetResults
aulas foram HitHighlights
removidas. Os resultados facetas são agora dactilografados como IDictionary<string, IList<FacetResult>>
e atingem os destaques como IDictionary<string, IList<string>>
. Uma forma rápida de resolver erros de construção introduzidos por esta alteração é adicionar using
pseudónimos no topo de cada ficheiro que utiliza os tipos removidos. Por exemplo:
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>>;
Alteração para SynonymMap
O SynonymMap
construtor já não tem um enum
parâmetro para SynonymMapFormat
. Este enum só tinha um valor, e foi, portanto, redundante. Se vir erros de construção como resultado disto, basta remover referências ao SynonymMapFormat
parâmetro.
Mudanças de classe modelo diversas
A AutocompleteMode
propriedade de AutocompleteParameters
não é mais anulado. Se tiver um código que atribui a null
este imóvel, pode simplesmente removê-lo e a propriedade será automaticamente inicializada ao valor predefinido.
A ordem dos parâmetros para o IndexAction
construtor mudou agora que este construtor é gerado automaticamente. Em vez de utilizar o construtor, recomendamos a utilização dos métodos IndexAction.Upload
de fábrica, IndexAction.Merge
e assim por diante.
Funcionalidades de pré-visualização removidas
Se estiver a atualizar a partir da versão 8.0 pré-visualização para a versão 9, esteja ciente de que a encriptação com as teclas geridas pelo cliente foi removida uma vez que esta funcionalidade ainda se encontra em pré-visualização. Especificamente, as EncryptionKey
propriedades de Index
e SynonymMap
foram removidas.
Se a sua aplicação tiver uma forte dependência desta funcionalidade, não poderá fazer upgrade para a versão 9 do Azure Search .NET SDK. Pode continuar a utilizar a versão 8.0 de pré-visualização. No entanto, tenha em mente que não recomendamos a utilização de SDKs de pré-visualização em aplicações de produção. As funcionalidades de pré-visualização são apenas para avaliação e podem ser alteradas.
Nota
Se criou índices encriptados ou mapas de sinónimo utilizando a versão 8.0-pré-visualização do SDK, ainda poderá utilizá-los e modificar as suas definições utilizando a versão 9 do SDK sem afetar negativamente o seu estado de encriptação. A versão 9 do SDK não enviará a encryptionKey
propriedade para a API REST e, consequentemente, a API REST não alterará o estado de encriptação do recurso.
Mudança comportamental na recuperação de dados
Se estiver a utilizar as "dinâmicas dactilografam", Search
Suggest
ou Get
APIs que devolvem instâncias do tipoDocument
, saiba que agora deserializam matrizes JSON vazias para object[]
em vez de string[]
.
Conclusão
Se precisar de mais detalhes sobre a utilização do Azure Search .NET SDK, consulte o .NET How-to.
Congratulamo-nos com o seu feedback sobre o SDK. Se encontrar problemas, sinta-se à vontade para nos pedir ajuda no Stack Overflow. Se encontrar um bug, pode arquivar um problema no repositório Azure .NET SDK GitHub. Certifique-se de pré-afixar o seu título de emissão com "[Azure Search]".
Obrigado por usar a Azure Search!