Extensão visual do Código do Estúdio para Azure Cognitive Search (aposentado)
A extensão do Código do Estúdio Visual para Azure Cognitive Search, anteriormente em pré-visualização, não avançou para a disponibilidade geral e está agora reformada a partir de 1 de novembro de 2022.
Embora a extensão já não esteja disponível em Azure Marketplace, o código está aberto em https://github.com/microsoft/vscode-azurecognitivesearch. Pode clonar e modificar a ferramenta para uso próprio.
Se estiver a utilizar a extensão, este artigo explica como formular pedidos de API REST interativamente utilizando as APIs de rest Azure Cognitive Search.
Pré-requisitos
São necessários os seguintes serviços e ferramentas para a utilização da extensão
Instalar a extensão
Veja o Readme em Github.
Estabelecer a ligação à subscrição
Inicie o COde do Estúdio Visual.
Selecione Iniciar sessão no Azure... e inicie sessão na sua Conta Azure.
Devia ver as suas assinaturas. Na imagem seguinte, o nome de subscrição é "Visual Studio Enterprise" e contém um serviço de pesquisa chamado "azsearch-service".
Para limitar as subscrições apresentadas, abra a paleta de comandos (Ctrl+Shift+P ou Cmd+Shift+P) e procure por Azure ou Selecione Subscrições. Existem também comandos disponíveis para iniciar sessão dentro e fora da sua conta Azure.
Quando expandir o serviço de pesquisa, verá itens de árvores para cada item de Pesquisa Cognitiva: índices, fontes de dados, indexadores, skillsets, mapas de sinónimo e pseudónimos.
Estes itens de árvore podem ser expandidos para mostrar todos os recursos que você tem no seu serviço de pesquisa.
1 - Criar um índice
Para criar um índice, utilize a API De Repouso Índice de Criação.
Com a extensão do Código VS, só precisa de se preocupar com o corpo do pedido. Para este arranque rápido, fornecemos uma definição de índice de amostra e documentos correspondentes.
Definição do índice
A definição de índice abaixo é um esquema de amostra para hotéis fictícios.
A fields
coleção define a estrutura dos documentos no índice de pesquisa. Cada campo tem um tipo de dados e uma série de atributos adicionais que determinam como o campo pode ser usado.
{
"name": "hotels-quickstart",
"fields": [
{
"name": "HotelId",
"type": "Edm.String",
"key": true,
"filterable": true
},
{
"name": "HotelName",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"sortable": true,
"facetable": false
},
{
"name": "Description",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"sortable": false,
"facetable": false,
"analyzer": "en.lucene"
},
{
"name": "Description_fr",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"sortable": false,
"facetable": false,
"analyzer": "fr.lucene"
},
{
"name": "Category",
"type": "Edm.String",
"searchable": true,
"filterable": true,
"sortable": true,
"facetable": true
},
{
"name": "Tags",
"type": "Collection(Edm.String)",
"searchable": true,
"filterable": true,
"sortable": false,
"facetable": true
},
{
"name": "ParkingIncluded",
"type": "Edm.Boolean",
"filterable": true,
"sortable": true,
"facetable": true
},
{
"name": "LastRenovationDate",
"type": "Edm.DateTimeOffset",
"filterable": true,
"sortable": true,
"facetable": true
},
{
"name": "Rating",
"type": "Edm.Double",
"filterable": true,
"sortable": true,
"facetable": true
},
{
"name": "Address",
"type": "Edm.ComplexType",
"fields": [
{
"name": "StreetAddress",
"type": "Edm.String",
"filterable": false,
"sortable": false,
"facetable": false,
"searchable": true
},
{
"name": "City",
"type": "Edm.String",
"searchable": true,
"filterable": true,
"sortable": true,
"facetable": true
},
{
"name": "StateProvince",
"type": "Edm.String",
"searchable": true,
"filterable": true,
"sortable": true,
"facetable": true
},
{
"name": "PostalCode",
"type": "Edm.String",
"searchable": true,
"filterable": true,
"sortable": true,
"facetable": true
},
{
"name": "Country",
"type": "Edm.String",
"searchable": true,
"filterable": true,
"sortable": true,
"facetable": true
}
]
}
],
"suggesters": [
{
"name": "sg",
"searchMode": "analyzingInfixMatching",
"sourceFields": [
"HotelName"
]
}
]
}
Para criar um novo índice, clique com o botão direito nos Índices e, em seguida, selecione Criar novo índice. Um editor com um nome semelhante indexes-new-28c972f661.azsindex
vai aparecer.
Cole a definição de índice de cima para a janela. Guarde o ficheiro e selecione Upload quando solicitado se pretender atualizar o índice. Este passo cria o índice e adiciona-o à vista da árvore à esquerda.
Se houver algum problema com a sua definição de índice, deve ver uma mensagem de erro semelhante à abaixo.
Se ocorrer um erro, corrija o problema e ressate o ficheiro.
2 - Documentos de carga
Na API REST, criar o índice e povoar o índice são passos separados. Em Azure Cognitive Search, o índice contém todos os dados pesmáveis. Neste arranque rápido, os dados são fornecidos como documentos JSON. O Add, Update ou Delete Documents REST API é utilizado para esta tarefa.
Para adicionar novos documentos ao índice:
Expandir o
hotels-quickstart
índice que criou. Clique com o botão direito em Documentos e selecione Criar novo documento.Devia ver um editor da JSON que indiciou o esquema do seu índice.
Cole no JSON abaixo e, em seguida, guarde o ficheiro. Um pedido pede-lhe que confirme as suas alterações. Selecione Upload para guardar as alterações.
{ "HotelId": "1", "HotelName": "Secret Point Motel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", "Category": "Boutique", "Tags": [ "pool", "air conditioning", "concierge" ], "ParkingIncluded": false, "LastRenovationDate": "1970-01-18T00:00:00Z", "Rating": 3.60, "Address": { "StreetAddress": "677 5th Ave", "City": "New York", "StateProvince": "NY", "PostalCode": "10022", "Country": "USA" } }
Repita este processo para os três documentos restantes:
Documento 2:
{ "HotelId": "2", "HotelName": "Twin Dome Motel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.", "Category": "Boutique", "Tags": [ "pool", "free wifi", "concierge" ], "ParkingIncluded": false, "LastRenovationDate": "1979-02-18T00:00:00Z", "Rating": 3.60, "Address": { "StreetAddress": "140 University Town Center Dr", "City": "Sarasota", "StateProvince": "FL", "PostalCode": "34243", "Country": "USA" } }
Documento 3:
{ "HotelId": "3", "HotelName": "Triple Landscape Hotel", "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.", "Category": "Resort and Spa", "Tags": [ "air conditioning", "bar", "continental breakfast" ], "ParkingIncluded": true, "LastRenovationDate": "2015-09-20T00:00:00Z", "Rating": 4.80, "Address": { "StreetAddress": "3393 Peachtree Rd", "City": "Atlanta", "StateProvince": "GA", "PostalCode": "30326", "Country": "USA" } }
Documento 4:
{ "HotelId": "4", "HotelName": "Sublime Cliff Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.", "Category": "Boutique", "Tags": [ "concierge", "view", "24-hour front desk service" ], "ParkingIncluded": true, "LastRenovationDate": "1960-02-06T00:00:00Z", "Rating": 4.60, "Address": { "StreetAddress": "7400 San Pedro Ave", "City": "San Antonio", "StateProvince": "TX", "PostalCode": "78216", "Country": "USA" } }
Neste momento, deverá ver os quatro documentos disponíveis na secção de documentos.
3 - Pesquisar um índice
Agora que o índice contém conteúdo, pode emitir consultas utilizando documentos de pesquisa REST API:
Clique com o botão direito no índice que pretende pesquisar e selecione Procurar. Este passo abre um editor com um nome semelhante a
sandbox-b946dcda48.azs
.Uma simples consulta é autopovoada. Prima Ctrl+Alt+R ou Cmd+Alt+R para submeter a consulta. Verá os resultados aparecerem numa janela à esquerda.
Consultas de exemplo
Experimente alguns outros exemplos de consulta para sentir a sintaxe. Há quatro consultas adicionais abaixo para que possa tentar. Pode adicionar várias consultas ao mesmo editor. Quando premir Ctrl+Alt+R ou Cmd+Alt+R, a linha que o seu cursor determina qual a consulta que será submetida.
Na primeira consulta, procuramos boutique
e select
apenas certos campos. É uma boa prática apenas select
para os campos de que precisa, porque retirar dados desnecessários pode adicionar latência às suas consultas. A consulta também define $count=true
para devolver o número total de resultados com os resultados da pesquisa.
// Query example 1 - Search `boutique` with select and return count
search=boutique&$count=true&$select=HotelId,HotelName,Rating,Category
Na próxima consulta, especificamos o termo wifi
de pesquisa e também incluímos um filtro para apenas devolver resultados em que o estado é igual a 'FL'
. Os resultados também são encomendados pelo Hotel Rating
.
// Query example 2 - Search with filter, orderBy, select, and count
search=wifi&$filter=Address/StateProvince eq 'FL'&$select=HotelId,HotelName,Rating,Address/StateProvince&$orderby=Rating desc
Em seguida, a pesquisa é limitada a um único campo pesmável usando o searchFields
parâmetro. Esta é uma ótima opção para tornar a sua consulta mais eficiente se você sabe que você só está interessado em jogos em certos campos.
// Query example 3 - Limit searchFields
search=sublime cliff&$select=HotelId,HotelName,Rating&searchFields=HotelName
Outra opção comum a incluir numa consulta é facets
. As facetas permitem-lhe construir filtros na sua aplicação para facilitar aos utilizadores saberem a que valores podem filtrar.
// Query example 4 - Take the top two results, and show only HotelName and Category in the results
search=*&$select=HotelId,HotelName,Rating&searchFields=HotelName&facet=Category
Índice aberto no portal
Se quiser ver o seu serviço de pesquisa no portal, clique com o botão direito no nome do serviço de pesquisa e selecione Abrir no Portal.
Limpar os recursos
Ao trabalhar na sua própria subscrição, recomendamos que verifique, depois de concluir um projeto, se irá precisar dos recursos que criou. Os recursos que deixar em execução podem custar-lhe dinheiro. Pode eliminar recursos individualmente ou eliminar o grupo de recursos para eliminar todo o conjunto de recursos.
Pode encontrar e gerir recursos no portal, utilizando a ligação de todos os recursos ou grupos de recursos no painel de navegação à esquerda.
Se estiver a utilizar um serviço gratuito, lembre-se que está limitado a três índices, indexadores e fontes de dados. Pode eliminar itens individuais no portal para ficar abaixo do limite.
Passos seguintes
Agora que sabe executar tarefas fundamentais, pode avançar com pedidos adicionais de API rest para funcionalidades mais avançadas, como indexantes ou criação de um pipeline de enriquecimento que adicione transformações de conteúdo à indexação. Para o seu próximo passo, recomendamos o seguinte link: