Udostępnij przez


Rozszerzenie programu Visual Studio Code dla usługi Azure Cognitive Search (wycofane)

Rozszerzenie programu Visual Studio Code dla usługi Azure Cognitive Search, wcześniej w wersji zapoznawczej, nie zostało przeniesione do ogólnej dostępności publicznej i zostało wycofane od 1 listopada 2022 r.

Mimo że rozszerzenie nie jest już dostępne w witrynie Azure Marketplace, kod jest open source pod adresem https://github.com/microsoft/vscode-azurecognitivesearch. Możesz sklonować i zmodyfikować narzędzie do własnego użycia.

Jeśli używasz rozszerzenia, w tym artykule wyjaśniono, jak interaktywnie sformułować żądania interfejsu API REST przy użyciu interfejsów API REST usługi Azure Cognitive Search.

Wymagania wstępne

Następujące usługi i narzędzia są wymagane do korzystania z rozszerzenia

Instalowanie rozszerzenia

Zobacz plik Readme w witrynie GitHub.

Połącz się z subskrypcją

Uruchom program Visual Studio COde.

Wybierz pozycję Zaloguj się do platformy Azure... i zaloguj się do swojego konta platformy Azure.

Powinny zostać wyświetlone twoje subskrypcje. Na poniższym zrzucie ekranu nazwa subskrypcji to "Visual Studio Enterprise" i zawiera jedną usługę wyszukiwania o nazwie "azsearch-service".

Subskrypcje platformy Azure programu VS Code

Aby ograniczyć wyświetlane subskrypcje, otwórz paletę poleceń (Ctrl+Shift+P lub Cmd+Shift+P) i wyszukaj pozycję Azure lub Wybierz subskrypcje. Dostępne są również polecenia służące do logowania się i wylogowania z konta platformy Azure.

Po rozwinięciu usługi wyszukiwania zobaczysz elementy drzewa dla każdego elementu usługi Cognitive Search: indeksy, źródła danych, indeksatory, zestawy umiejętności, mapy synonimów i aliasy.

Drzewo wyszukiwania w Azure w programie VS Code

Te elementy drzewa można rozszerzyć, aby wyświetlić wszystkie zasoby, które znajdują się w usłudze wyszukiwania.

1 — Tworzenie indeksu

Aby utworzyć indeks, użyj interfejsu API REST tworzenia indeksu.

Dzięki rozszerzeniu VS Code musisz się tylko skupić na treści żądania. W tym przewodniku szybkiego startu udostępniamy przykładową definicję indeksu i odpowiadające dokumenty.

Definicja indeksu

Poniższa definicja indeksu to przykładowy schemat fikcyjnych hoteli.

Kolekcja fields definiuje strukturę dokumentów w indeksie wyszukiwania. Każde pole ma typ danych i wiele dodatkowych atrybutów, które określają, jak można użyć pola.

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

Aby utworzyć nowy indeks, kliknij prawym przyciskiem myszy pozycję Indeksy , a następnie wybierz polecenie Utwórz nowy indeks. Zostanie wyświetlony edytor o nazwie podobnej do indexes-new-28c972f661.azsindex .

Wklej definicję indeksu z powyższego do okna. Zapisz plik i wybierz pozycję Przekaż po wyświetleniu monitu, jeśli chcesz zaktualizować indeks. Ten krok tworzy indeks i dodaje go do widoku drzewa po lewej stronie.

GIF tworzenia indeksu

Jeśli występuje problem z definicją indeksu, powinien zostać wyświetlony komunikat o błędzie podobny do poniższego.

Komunikat o błędzie tworzenia indeksu

Jeśli wystąpi błąd, rozwiąż problem i ponownie zapisz plik.

2 — Ładowanie dokumentów

W interfejsie API REST tworzenie indeksu i wypełnianie indeksu są oddzielnymi krokami. W usłudze Azure Cognitive Search indeks zawiera wszystkie dane z możliwością wyszukiwania. W tym szybkim starcie dane są dostarczane jako dokumenty JSON. Interfejs API REST Dodawania, aktualizowania lub usuwania dokumentów jest używany do tego zadania.

Aby dodać nowe dokumenty do indeksu:

  1. hotels-quickstart Rozwiń utworzony indeks. Kliknij prawym przyciskiem myszy pozycję Dokumenty i wybierz polecenie Utwórz nowy dokument.

    Tworzenie dokumentu

  2. Powinien zostać wyświetlony edytor JSON, który wywnioskował schemat indeksu.

    Tworzenie pliku json dokumentu

  3. Wklej poniższy kod JSON, a następnie zapisz plik. Zostanie wyświetlony monit z prośbą o potwierdzenie zmian. Wybierz pozycję Przekaż , aby zapisać zmiany.

    {
        "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. Powtórz ten proces dla trzech pozostałych dokumentów:

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

Na tym etapie wszystkie cztery dokumenty powinny być widoczne w sekcji dokumenty.

stan po przekazaniu wszystkich dokumentów

3 — Wyszukiwanie indeksu

Teraz, gdy indeks zawiera zawartość, możesz wydać zapytania przy użyciu interfejsu API REST wyszukiwania dokumentów:

  1. Kliknij prawym przyciskiem myszy indeks, który chcesz wyszukać, a następnie wybierz pozycję Wyszukaj. W tym kroku zostanie otwarty edytor o nazwie podobnej do sandbox-b946dcda48.azs.

    widok wyszukiwania dla rozszerzenia

  2. Proste zapytanie jest wypełniane automatycznie. Naciśnij Ctrl+Alt+R lub Cmd+Alt+R , aby przesłać zapytanie. Wyniki zostaną wyświetlone w oknie po lewej stronie.

    wyniki wyszukiwania w rozszerzeniu

Przykładowe zapytania

Wypróbuj kilka innych przykładów zapytań, aby poznać składnię. Poniżej przedstawiono cztery dodatkowe zapytania, które należy wykonać. Do tego samego edytora można dodać wiele zapytań. Po naciśnięciu Ctrl+Alt+R lub Cmd+Alt+R wiersz kursora określa, które zapytanie zostanie przesłane.

zapytania i wyniki obok siebie

W pierwszym zapytaniu wyszukujemy tylko w niektórych polach boutique oraz select. Najlepszą praktyką jest używanie tylko select dla potrzebnych pól, ponieważ pobieranie zbędnych danych może powodować opóźnienia w zapytaniach. Zapytanie ustawia $count=true również, aby zwrócić łączną liczbę wyników z wynikami wyszukiwania.

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

W następnym zapytaniu określamy termin wifi wyszukiwania, a także uwzględniamy filtr, aby zwracać wyniki tylko wtedy, gdy stan jest równy 'FL'. Wyniki są również uporządkowane według hotelu 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

Następnie wyszukiwanie jest ograniczone do pojedynczego pola z możliwością wyszukiwania przy użyciu parametru searchFields . Jest to świetna opcja, aby zapytanie było bardziej wydajne, jeśli wiesz, że interesują Cię dopasowania w poszczególnych polach.

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

Inną typową opcją uwzględnienia w zapytaniu jest facets. Facety umożliwiają tworzenie filtrów w aplikacji, aby użytkownicy łatwiej mogli zawęzić wartości, które chcą filtrować.

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

Otwieranie indeksu w portalu

Jeśli chcesz wyświetlić usługę wyszukiwania w portalu, kliknij prawym przyciskiem myszy nazwę usługi wyszukiwania i wybierz polecenie Otwórz w portalu.

Czyszczenie zasobów

Jeśli pracujesz we własnej subskrypcji, dobrym pomysłem na końcu projektu jest określenie, czy nadal potrzebujesz utworzonych zasobów. Zasoby pozostawione włączone mogą generować koszty. Zasoby można usunąć pojedynczo lub usunąć grupę zasobów, aby usunąć cały zestaw zasobów.

Zasoby można znaleźć w portalu i zarządzać nimi, korzystając z linku Wszystkie zasoby lub Grupy zasobów w okienku nawigacji po lewej stronie.

Jeśli używasz bezpłatnej usługi, pamiętaj, że masz ograniczenie do trzech indeksów, indeksatorów i źródeł danych. Możesz usunąć poszczególne elementy w portalu, aby pozostać w limicie.

Następne kroki

Teraz, gdy wiesz już, jak wykonywać podstawowe zadania, możesz przejść do przodu dzięki dodatkowym wywołaniom interfejsu API REST dla bardziej zaawansowanych funkcji, takich jak indeksatory lub skonfigurowanie potoku wzbogacania , który dodaje przekształcenia zawartości do indeksowania. W następnym kroku zalecamy następujący link: