Udostępnij za pośrednictwem


rozszerzenie Visual Studio Code dla Azure Cognitive Search (wycofane)

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

Mimo że rozszerzenie nie jest już dostępne w Azure Marketplace, kod jest typu 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 formułować żądania interfejsu API REST przy użyciu interfejsów API REST 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.

Nawiązywanie połączenia z subskrypcją

Uruchom narzędzie 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 wykluczania konta platformy Azure.

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

Drzewo wyszukiwania platformy Azure w programie VS Code w

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.

Rozszerzenie programu VS Code wymaga tylko martwić się o treść żądania. W tym przewodniku Szybki start udostępnimy przykładową definicję indeksu i odpowiednie 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 określających sposób użycia 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 pozycję 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 Azure Cognitive Search indeks zawiera wszystkie dane z możliwością wyszukiwania. W tym przewodniku Szybki start dane są udostępniane jako dokumenty JSON. W tym zadaniu jest używany interfejs API REST Dodawania, aktualizowania lub usuwania dokumentów .

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 — Przeszukiwanie indeksu

Teraz, gdy indeks zawiera zawartość, możesz wysyłać 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. Ten krok otwiera edytor o nazwie podobnej do sandbox-b946dcda48.azs.

    widok wyszukiwania rozszerzenia

  2. Proste zapytanie jest wypełniane automatycznie. Naciśnij klawisze 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 znajdują się cztery dodatkowe zapytania, które należy wypróbować. Do tego samego edytora można dodać wiele zapytań. Po naciśnięciu klawiszy 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 boutique tylko select niektóre pola. Najlepszym rozwiązaniem jest tylko select te pola, których potrzebujesz, ponieważ ściąganie niepotrzebnych danych może zwiększyć opóźnienie zapytań. Zapytanie ustawia również wartość $count=true , 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 przez 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

Następnie wyszukiwanie jest ograniczone do pojedynczego pola z możliwością wyszukiwania przy użyciu parametru searchFields . Jest to świetna opcja, aby zwiększyć wydajność zapytania, jeśli wiesz, że interesuje Cię tylko dopasowanie w niektórych polach.

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

Inną typową opcją uwzględnienia w zapytaniu jest .facets Aspekty umożliwiają tworzenie filtrów w aplikacji, aby ułatwić użytkownikom poznanie wartości, do których mogą 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

W przypadku pracy w ramach własnej subskrypcji warto sprawdzić po zakończeniu projektu, czy dalej potrzebuje się utworzonych zasobów. Uruchomione zasoby mogą generować koszty. Zasoby możesz usuwać pojedynczo lub możesz usunąć grupę zasobów, aby usunąć cały ich zestaw.

Zasoby można znaleźć i zarządzać nimi w portalu, 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 w celu uzyskania 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: