Rozšíření Visual Studio Code pro Azure Cognitive Search (vysloužilé)

Rozšíření Visual Studio Code pro Azure Cognitive Search, dříve ve verzi náhledu, se nepřesunulo k obecné dostupnosti a bylo k 1. listopadu 2022 ukončeno.

I když rozšíření už není dostupné na Azure Marketplace, kód je opensourcový na adrese https://github.com/microsoft/vscode-azurecognitivesearch. Nástroj můžete naklonovat a upravit pro vlastní použití.

Pokud používáte rozšíření, tento článek vysvětluje, jak interaktivně formulovat požadavky REST API pomocí rozhraní REST API služby Azure Cognitive Search.

Požadavky

Pro použití rozšíření jsou vyžadovány následující služby a nástroje.

Instalace rozšíření

Podívejte se na soubor Readme na GitHubu.

Připojení k vašemu předplatnému

Spusťte Visual Studio COde.

Vyberte Přihlásit se k Azure... a přihlaste se ke svému účtu Azure.

Zkontrolujte svá předplatná. Na následujícím snímku obrazovky je název předplatného Visual Studio Enterprise a obsahuje jednu vyhledávací službu s názvem azsearch-service.

Azure předplatná ve VS Code

Pokud chcete omezit zobrazená předplatná, otevřete paletu příkazů (Ctrl+Shift+P nebo Cmd+Shift+P) a vyhledejte Azure nebo Vyberte předplatná. K dispozici jsou také příkazy pro přihlášení a odhlášení z účtu Azure.

Když rozbalíte vyhledávací službu, uvidíte stromové položky pro každou položku kognitivního vyhledávání: indexy, zdroje dat, indexery, sady dovedností, mapy synonym a aliasy.

Strom prohledávání Azure ve VS Code

Tyto položky stromové struktury je možné rozšířit a zobrazit všechny prostředky, které máte ve vyhledávací službě.

1. Vytvoření indexu

K vytvoření indexu použijte rozhraní REST API pro vytvoření indexu.

S rozšířením VS Code se musíte starat jenom o tělo požadavku. Pro účely tohoto rychlého startu poskytneme ukázkovou definici indexu a odpovídající dokumenty.

Definice indexu

Následující definice indexu je ukázkové schéma pro fiktivní hotely.

Kolekce fields definuje strukturu dokumentů v indexu vyhledávání. Každé pole má datový typ a řadu dalších atributů, které určují způsob použití pole.

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

Chcete-li vytvořit nový index, klikněte pravým tlačítkem myši na Indexy a pak vyberte Vytvořit nový index. Zobrazí se editor s podobným názvem indexes-new-28c972f661.azsindex .

Do okna vložte definici indexu shora. Uložte soubor a po zobrazení výzvy vyberte Nahrát , pokud chcete aktualizovat index. Tento krok vytvoří index a přidá ho do stromového zobrazení vlevo.

Gif vytvoření indexu

Pokud dojde k potížím s definicí indexu, měla by se zobrazit chybová zpráva podobná následující.

Vytvoření chybové zprávy indexu

Pokud dojde k chybě, opravte problém a soubor uložte znovu.

2. Načtení dokumentů

V rozhraní REST API je vytvoření indexu a naplnění indexu samostatnými kroky. Index ve službě Azure Cognitive Search obsahuje všechna prohledávatelná data. V tomto rychlém startu jsou data poskytována jako dokumenty JSON. Pro tuto úlohu se používá rozhraní REST API Pro přidání, aktualizaci nebo odstranění dokumentů .

Přidání nových dokumentů do indexu:

  1. hotels-quickstart Rozbalte index, který jste vytvořili. Klikněte pravým tlačítkem na Dokumenty a vyberte Vytvořit nový dokument.

    Vytvoření dokumentu

  2. Měli byste vidět editor JSON, který odvodil schéma indexu.

    Vytvoření souboru JSON dokumentu

  3. Vložte níže uvedený kód JSON a pak soubor uložte. Výzva vás vyzve k potvrzení změn. Výběrem Nahrát uložte změny.

    {
        "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. Tento postup opakujte pro tři zbývající dokumenty:

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

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

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

V tomto okamžiku byste měli vidět všechny čtyři dokumenty dostupné v části Dokumenty.

stav po nahrání všech dokumentů

3. Hledání indexu

Teď, když index obsahuje obsah, můžete vydávat dotazy pomocí rozhraní REST API pro vyhledávání dokumentů:

  1. Klikněte pravým tlačítkem myši na index, který chcete vyhledat, a vyberte Hledat. Tento krok otevře editor s názvem podobným sandbox-b946dcda48.azs.

    vyhledávací zobrazení rozšíření

  2. Jednoduchý dotaz je automaticky vyplněný. Stisknutím kombinace kláves Ctrl+Alt+R nebo Cmd+Alt+R odešlete dotaz. Výsledky se zobrazí v okně vlevo.

    výsledky hledání v rozšíření

Příkladové dotazy

Vyzkoušejte několik dalších příkladů dotazů, abyste získali pocit syntaxe. Níže najdete čtyři další dotazy, které můžete vyzkoušet. Do stejného editoru můžete přidat více dotazů. Když stisknete Ctrl+Alt+R nebo Cmd+Alt+R, linie kurzoru určuje, který dotaz se odešle.

dotazy a výsledky vedle sebe

V prvním dotazu prohledáme boutique a select pouze určitá pole. Osvědčeným postupem je pouze select pole, která potřebujete, protože stažení nepotřebných dat může do dotazů přidat latenci. Dotaz také nastaví $count=true , aby vrátil celkový počet výsledků včetně výsledků hledání.

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

V dalším dotazu určíme hledaný termín wifi a zahrneme také filtr, který vrátí pouze výsledky, ve kterých je stav roven 'FL'. Výsledky jsou také objednány hotelovým hotelem 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

Dále je hledání omezeno na jedno prohledávatelné pole pomocí parametru searchFields . To je skvělá možnost, jak usnadnit dotaz, pokud víte, že vás zajímají jenom shody v určitých polích.

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

Další běžnou možností zahrnutí do dotazu je facets. Facety umožňují vytvářet filtry ve vaší aplikaci, aby uživatelé snadno věděli, na jaké hodnoty můžou filtrovat.

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

Otevření indexu na portálu

Pokud chcete zobrazit vyhledávací službu na portálu, klikněte pravým tlačítkem na název vyhledávací služby a vyberte Otevřít na portálu.

Vyčistěte zdroje

Když pracujete ve vlastním předplatném, je vhodné na konci projektu zjistit, jestli prostředky, které jste vytvořili, stále potřebujete. Prostředky ponechané v provozu mohou způsobit výdaje. Prostředky můžete odstranit jednotlivě nebo odstranit skupinu prostředků a odstranit tak celou sadu prostředků.

Prostředky můžete najít a spravovat na portálu pomocí odkazu Všechny prostředky nebo skupiny prostředků v levém navigačním podokně.

Pokud používáte bezplatnou službu, mějte na paměti, že jste omezeni na tři indexy, indexery a zdroje dat. Jednotlivé položky na portálu můžete odstranit, abyste zůstali pod limitem.

Další kroky

Teď, když víte, jak provádět základní úlohy, můžete přejít k dalším voláním rozhraní REST API pro pokročilejší funkce, jako jsou indexery nebo nastavení kanálu rozšiřování , který přidává transformace obsahu do indexování. Pro další krok doporučujeme následující odkaz: