Visual Studio Code-extensie voor Azure Cognitive Search (buiten gebruik gesteld)

De Visual Studio Code-extensie voor Azure Cognitive Search, eerder in preview, is niet algemeen beschikbaar en wordt nu vanaf 1 november 2022 buiten gebruik gesteld.

Hoewel de extensie niet meer beschikbaar is in Azure Marketplace, is de code open source op https://github.com/microsoft/vscode-azurecognitivesearch. U kunt het hulpprogramma klonen en wijzigen voor eigen gebruik.

Als u de extensie gebruikt, wordt in dit artikel uitgelegd hoe u REST API-aanvragen interactief formuleert met behulp van de Azure Cognitive Search REST API's.

Vereisten

De volgende services en hulpprogramma's zijn vereist voor het gebruik van de extensie

De extensie installeren

Zie Het Leesmij-bestand op Github.

Verbinding maken met uw abonnement

Start Visual Studio COde.

Selecteer Aanmelden bij Azure... en meld u aan bij uw Azure-account.

Als het goed is, ziet u uw abonnementen. In de volgende schermopname is de naam van het abonnement 'Visual Studio Enterprise' en bevat het één zoekservice met de naam 'azsearch-service'.

VS Code Azure-abonnementen

U kunt het aantal abonnementen dat wordt weergegeven, beperken door het opdrachtpalet te openen (Ctrl+Shift+P of Cmd+Shift+P) en te zoeken naar Azure of Abonnementen selecteren. Er zijn ook opdrachten beschikbaar waarmee u zich bij uw Azure-account kunt aan- en afmelden.

Wanneer u de zoekservice uitvouwt, ziet u structuuritems voor elk Cognitive Search-item: indexen, gegevensbronnen, indexeerfuncties, vaardighedensets, synoniemenkaarten en aliassen.

VS Code Azure-zoekstructuur

Deze structuuritems kunnen worden uitgebreid om alle resources weer te geven die u in uw zoekservice hebt.

1 - Een index maken

Als u een index wilt maken, gebruikt u de REST API Index maken.

Met de VS Code-extensie hoeft u alleen maar na te denken over de hoofdtekst van de aanvraag. Voor deze quickstart geven we een voorbeeld van een indexdefinitie en de bijbehorende documenten.

Indexdefinitie

De onderstaande indexdefinitie is een voorbeeld van een schema voor fictieve hotels.

Met de verzameling fields wordt de structuur van documenten in de zoekindex gedefinieerd. Elk veld heeft een gegevenstype en een aantal extra kenmerken die bepalen hoe het veld kan worden gebruikt.

{
    "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"
            ]
        }
    ]
}

Als u een nieuwe index wilt maken, klikt u met de rechtermuisknop op Indexen en selecteert u vervolgens Nieuwe index maken. Een editor met een naam die lijkt op indexes-new-28c972f661.azsindex wordt geopend.

Plak de indexdefinitie van hierboven in het venster. Sla het bestand op en selecteer Uploaden wanneer u wordt gevraagd of u de index wilt bijwerken. In deze stap wordt de index gemaakt en toegevoegd aan de structuurweergave aan de linkerkant.

GIF van het maken van een index

Als er een probleem is met uw indexdefinitie, ziet u een foutbericht dat lijkt op het foutbericht hieronder.

Foutbericht bij het maken van de index

Als er een fout optreedt, lost u het probleem op en kunt u het bestand opnieuw opslaan.

2 - Documenten laden

In de REST API zijn het maken van de index en het invullen van de index afzonderlijke stappen. In Azure Cognitive Search bevat de index alle doorzoekbare gegevens. In deze quickstart worden de gegevens geleverd als JSON-documenten. De REST API voor documenten toevoegen, bijwerken of verwijderen wordt voor deze taak gebruikt.

Nieuwe documenten toevoegen aan de index:

  1. Vouw de index hotels-quickstart uit die u hebt gemaakt. Klik met de rechtermuisknop op Documenten en selecteer Nieuw document maken.

    Een document maken

  2. U ziet nu een JSON-editor die het schema van uw index heeft afgeleid.

    Een document-JSON maken

  3. Plak de onderstaande JSON en sla het bestand op. U wordt gevraagd uw wijzigingen te bevestigen. Selecteer Uploaden om de wijzigingen op te slaan.

    {
        "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. Herhaal dit proces voor de drie resterende documenten:

    Document 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"
        } 
    }
    

    Document 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"
        } 
    }
    

    Document 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"
        }
    }
    

U ziet nu alle vier de documenten die in de documentsectie beschikbaar zijn.

status na het uploaden van alle documenten

3 - Een index doorzoeken

Nu de index inhoud bevat, kunt u query's uitvoeren met behulp van de REST API voor zoekdocumenten:

  1. Klik met de rechtermuisknop op de index die u wilt zoeken en selecteer Zoeken. Met deze stap opent u een editor met een naam die sandbox-b946dcda48.azsvergelijkbaar is met .

    zoekweergave van extensie

  2. Er wordt automatisch een eenvoudige query ingevuld. Druk op Ctrl+Alt+R of Cmd+Alt+R om de query in te dienen. De resultaten worden in een venster aan de linkerkant weergegeven.

    zoekresultaten in extensie

Voorbeelden van query's

Probeer een paar andere queryvoorbeelden uit om een idee te krijgen van de syntaxis. Hieronder vindt u vier extra query's die u kunt uitproberen. U kunt meerdere query's aan dezelfde editor toevoegen. Wanneer u op Ctrl+Alt+R of Cmd+Att+R drukt, bepaalt de regel waarop de cursor staat welke query wordt verzonden.

query's en resultaten naast elkaar

Met de eerste query zoeken we alleen in bepaalde velden naar boutique en select. Het is een best practice om alleen de velden te select die u nodig hebt, omdat het ophalen van overbodige gegevens een latentie kan veroorzaken bij uw query's. Met de query wordt ook $count=true ingesteld, zodat samen met de zoekresultaten ook het totale aantal resultaten wordt geretourneerd.

// Query example 1 - Search `boutique` with select and return count
search=boutique&$count=true&$select=HotelId,HotelName,Rating,Category

In de volgende query geven we de zoekterm wifi op en nemen we ook een filter op om alleen resultaten te retourneren waarvan de status gelijk is aan 'FL'. Resultaten worden ook gerangschikt op de Ratingvan het 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

Vervolgens kan de zoekopdracht worden beperkt tot één doorzoekbaar veld met behulp van de parameter searchFields. Dit is een uitstekende optie om uw query efficiënter te maken als u weet dat u alleen geïnteresseerd bent in overeenkomende resultaten in bepaalde velden.

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

Een andere veelgebruikte optie die in een query moet worden opgenomen, is facets. Met facetten kunt u filters voor uw app bouwen, zodat gebruikers gemakkelijk kunnen weten op welke waarden ze kunnen filteren.

// 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

Index openen in de portal

Als u uw zoekservice in de portal wilt bekijken, klikt u met de rechtermuisknop op de naam van de zoekservice en selecteert u Openen in portal.

Resources opschonen

Wanneer u in uw eigen abonnement werkt, is het een goed idee om aan het einde van een project te bepalen of u de gemaakte resources nog steeds nodig hebt. Resources die actief blijven, kunnen u geld kosten. U kunt resources afzonderlijk verwijderen, maar u kunt ook de resourcegroep verwijderen als u de volledige resourceset wilt verwijderen.

U kunt resources vinden en beheren in de portal via de koppeling Alle resources of Resourcegroepen in het navigatiedeelvenster aan de linkerkant.

Als u een gratis service gebruikt, moet u er rekening mee houden dat u bent beperkt tot drie indexen, indexeerfuncties en gegevensbronnen. U kunt afzonderlijke items in de portal verwijderen om onder de limiet te blijven.

Volgende stappen

Nu u weet hoe u kerntaken uitvoert, kunt u verdergaan met aanvullende REST API-aanroepen voor geavanceerdere functies, zoals indexeerfuncties of het instellen van een verrijkingspijplijn waarmee inhoudstransformaties worden toegevoegd aan indexering. Voor de volgende stap wordt de volgende koppeling aangeraden: