Visual Studio Code extensão para Azure Cognitive Search (desativado)

A extensão Visual Studio Code para Azure Cognitive Search, anteriormente em versão prévia, não avançou para a disponibilidade geral e agora está desativada a partir de 1º de novembro de 2022.

Embora a extensão não esteja mais disponível no Azure Marketplace, o código é de código aberto em https://github.com/microsoft/vscode-azurecognitivesearch. Você pode clonar e modificar a ferramenta para seu próprio uso.

Se você estiver usando a extensão, este artigo explicará como formular solicitações de API REST interativamente usando as APIs REST Azure Cognitive Search.

Pré-requisitos

Os serviços e ferramentas a seguir são necessários para usar a extensão

Instalar a extensão

Consulte o Leiame no Github.

Conecte-se as suas assinaturas

Inicie o COde do Visual Studio.

Selecione Entrar no Azure... e faça logon na sua conta do Azure.

Você deve ver suas assinaturas. Na captura de tela a seguir, o nome da assinatura é "Visual Studio Enterprise" e contém um serviço de pesquisa chamado "azsearch-service".

Assinaturas do Azure do VS Code

Para limitar as assinaturas exibidas, abra a paleta de comandos (Ctrl+Shift+P ou Cmd+Shift+P) e pesquise Azure ou Selecione Assinaturas. Também há comandos disponíveis para entrar e sair da sua conta do Azure.

Ao expandir o serviço de pesquisa, você verá itens de árvore para cada item do Cognitive Search: índices, fontes de dados, indexadores, conjuntos de habilidades e mapas de sinônimos e aliases.

Árvore de pesquisa do Azure no VS Code

Esses itens de árvore podem ser expandidos para mostrar os recursos que você tem em seu serviço de pesquisa.

1 - Criar um índice

Para criar um índice, use a API REST Criar Índice.

Com a extensão do VS Code, você só precisa se preocupar com o corpo da solicitação. Neste guia de início rápido, fornecemos uma definição de índice de exemplo e os documentos correspondentes.

Definição do índice

A definição de índice abaixo é um esquema de exemplo para hotéis fictícios.

A coleção fields define a estrutura de documentos no índice de pesquisa. Cada campo tem um tipo de dados e vários 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 índice, clique com o botão direito do mouse em Índices e, em seguida, selecione Criar índice. Um editor com um nome semelhante a indexes-new-28c972f661.azsindex será exibido.

Cole a definição de índice acima na janela. Salve o arquivo e selecione Carregar quando for solicitado se você quiser atualizar o índice. Essa etapa cria o índice e o adiciona à exibição de árvore à esquerda.

Gif da criação de um índice

Se houver um problema com sua definição de índice, você deverá ver uma mensagem de erro semelhante à abaixo.

Criar mensagem de erro de índice

Se ocorrer um erro, corrija o problema e salve o arquivo novamente.

2 - Carregar documentos

Na API REST, criar o índice e popular o índice são etapas separadas. No Azure Cognitive Search, o índice contém todos os dados pesquisáveis. Neste início rápido, os dados são fornecidos como documentos JSON. A API REST Adicionar, Atualizar ou Excluir Documentos é usada para essa tarefa.

Para adicionar novos documentos ao índice:

  1. Expanda o índice hotels-quickstart que você criou. Clique com o botão direito do mouse em Documentos e selecione Criar documento.

    Criar um documento

  2. Você deve visualizar um editor JSON que inferiu o esquema do índice.

    Criar um documento JSON

  3. Cole no JSON abaixo e salve o arquivo. Um prompt solicita que você confirme suas alterações. Selecione Carregar para salvar 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"
        } 
    }
    
  4. Repita esse 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 ponto, você deve ver todos os quatro documentos disponíveis na seção de documentos.

status depois do upload de todos os documentos

3 - Pesquisar um índice

Agora que o índice contém conteúdo, você pode emitir consultas usando a API REST de Documentos de Pesquisa:

  1. Clique com o botão direito do mouse no índice a ser pesquisado e selecione Pesquisar. Esta etapa abre um editor com um nome semelhante a sandbox-b946dcda48.azs.

    exibição de pesquisa da extensão

  2. Uma consulta simples é preenchida automaticamente. Pressione Ctrl+Alt+R ou Cmd+Alt+R para enviar a consulta. Você verá os resultados aparecem em uma janela à esquerda.

    resultados da pesquisa na extensão

Consultas de exemplo

Experimente alguns outros exemplos de consulta para ter uma ideia da sintaxe. Há quatro consultas adicionais abaixo para você experimentar. Você pode adicionar várias consultas a um mesmo editor. Quando você pressiona Ctrl+Alt+R ou Cmd+Alt+R, a linha do seu cursor determina qual consulta será enviada.

consultas e resultados lado a lado

Na primeira consulta, pesquisamos boutique e select apenas em determinados campos. É uma prática recomendada a apenas select dos campos de que você precisa, pois a extração de dados desnecessários pode adicionar latência às suas consultas. A consulta também configura $count=true para retornar 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 de pesquisa wifi e incluímos um filtro para retornar apenas os resultados em que o estado é igual a 'FL'. Os resultados também são ordenados pela Rating do hotel.

// 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 pesquisável usando o parâmetro searchFields. Essa é uma ótima opção para tornar sua consulta mais eficiente, se você souber que está interessado apenas em correspondências em determinados campos.

// Query example 3 - Limit searchFields
search=sublime cliff&$select=HotelId,HotelName,Rating&searchFields=HotelName

Outra opção comum a ser incluída em uma consulta é facets. As facetas permitem que você crie filtros em seu aplicativo para tornar mais fácil para os usuários saberem quais valores eles 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

Abrir índice no portal

Se você quiser exibir o serviço de pesquisa no portal, clique com o botão direito do mouse no nome do serviço de pesquisa e selecione Abrir no Portal.

Limpar os recursos

Quando você está trabalhando em sua própria assinatura, é uma boa ideia identificar, no final de um projeto, se você ainda precisa dos recursos criados. Recursos deixados em execução podem custar dinheiro. Você pode excluir os recursos individualmente ou excluir o grupo de recursos para excluir todo o conjunto de recursos.

Você pode localizar e gerenciar recursos no portal usando o link Todos os recursos ou Grupos de recursos no painel de navegação à esquerda.

Se você estiver usando um serviço gratuito, estará limitado a três índices, indexadores e fontes de dados. Você pode excluir itens individuais no portal para permanecer abaixo do limite.

Próximas etapas

Agora que você sabe como executar tarefas principais, pode avançar com chamadas adicionais à API REST para recursos mais avançados, como indexadores ou configuração de um pipeline de enriquecimento que adiciona transformações de conteúdo à indexação. Para a próxima etapa, recomendamos o seguinte link: