Upgrade para Azure Search .NET SDK versão 3
Se estiver a utilizar a versão 2.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 3.
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 3 do Azure Search .NET SDK contém algumas alterações a partir de versões anteriores. Estes são na sua maioria menores, por isso mudar o seu código deve exigir apenas o mínimo de esforço. 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 1.0.2 pré-visualização ou mais antiga, deve atualizar para a versão 1.1 primeiro e, em seguida, atualizar para a versão 3. Consulte a atualização para a versão 1.1 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 3
A versão 3 do Azure Search .NET SDK tem como alvo a versão mais recente geralmente disponível da Azure Search REST API, especificamente 2016-09-01. Isto permite utilizar muitas novas funcionalidades da Azure Search a partir de uma aplicação .NET, incluindo as seguintes:
- Analisadores personalizados
- Armazenamento de Blobs do Azure e Azure Table Armazenamento suporte indexante
- Personalização do indexante através de mapeamentos de campo
- Suporte ETags para permitir uma atualização segura e simultânea de definições de índices, indexadores e fontes de dados
- Suporte para a construção de definições de campo de índice declarativamente decorando a sua classe de modelo e usando a nova
FieldBuilder
classe. - Suporte para .NET Core e .NET Perfil portátil 111
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, deverá ver um erro de construção como o seguinte:
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?)
O próximo passo é corrigir este erro de construção. Consulte Breaking changes na versão 3 para obter detalhes sobre o que causa o erro e como corrigi-lo.
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 a IndexingParameters.Base64EncodeKeys
propriedade, deve receber um aviso que diz "This property is obsolete. Please create a field mapping using 'FieldMapping.Base64Encode' instead."
Uma vez corrigido quaisquer erros de construção, pode escoar alterações na sua aplicação para tirar partido de novas funcionalidades, se assim o desejar. As novas funcionalidades no SDK são detalhadas no que há de novo na versão 3.
Quebra de mudanças na versão 3
Há um pequeno número de alterações na versão 3 que podem exigir alterações de código para além de reconstruir a sua aplicação.
Índices.Tipo de retorno de obter mente
O Indexes.GetClient
método tem um novo tipo de retorno. Anteriormente, voltou SearchIndexClient
- mas este foi alterado para ISearchIndexClient
a versão 2.0-preview, e essa mudança passa para a versão 3. Isto é para apoiar os clientes que desejem gozar com o método para GetClient
os testes unitários, devolvendo uma implementação simulada de ISearchIndexClient
.
Exemplo
Se o seu código se parece com isto:
SearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
Pode alterá-lo para isto para corrigir quaisquer erros de construção:
ISearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
Analisador Nome, DataType e outros já não são implicitamente convertíveis para cordas
Existem muitos tipos no Azure Search .NET SDK que derivam de ExtensibleEnum
. Anteriormente, estes tipos eram todos implicitamente convertíveis para escrever string
. No entanto, foi descoberto um bug na implementação Object.Equals
destas classes, e a correção do bug exigia desativar esta conversão implícita. A conversão string
explícita ainda é permitida.
Exemplo
Se o seu código se parece com isto:
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 }),
};
Pode alterá-lo para isto para corrigir quaisquer erros de construção:
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 })
};
Membros obsoletos removidos
Pode ver erros de construção relacionados com métodos ou propriedades que foram marcados como obsoletos na versão 2.0-pré-visualização e posteriormente removidos na versão 3. Se encontrar tais erros, eis como resolvê-los:
- Se estava a usar este construtor:
ScoringParameter(string name, string value)
use este em vez disso:ScoringParameter(string name, IEnumerable<string> values)
- Se você estava usando a
ScoringParameter.Value
propriedade, use aScoringParameter.Values
propriedade ou oToString
método em vez disso. - Se você estava usando a
SearchRequestOptions.RequestId
propriedade, use aClientRequestId
propriedade em vez disso.
Funcionalidades de pré-visualização removidas
Se estiver a atualizar da versão 2.0 para a versão 3, esteja ciente de que o suporte de análise JSON e CSV para Indexadores Blob foi removido uma vez que estas funcionalidades ainda estão em pré-visualização. Especificamente, foram removidos os seguintes métodos da IndexingParametersExtensions
classe:
ParseJson
ParseJsonArrays
ParseDelimitedTextFiles
Se a sua aplicação tiver uma forte dependência destas funcionalidades, não poderá fazer upgrade para a versão 3 do Azure Search .NET SDK. Pode continuar a utilizar a versão 2.0-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.
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!