расширение Visual Studio Code для Когнитивный поиск Azure (прекращено)

Расширение Visual Studio Code для Когнитивный поиск Azure, ранее доступное в предварительной версии, не переместилось в общедоступную версию и теперь прекращено с 1 ноября 2022 г.

Хотя расширение больше не доступно в Azure Marketplace, код с открытым кодом находится по адресу https://github.com/microsoft/vscode-azurecognitivesearch. Вы можете клонировать и изменить средство для собственного использования.

Если вы используете расширение, в этой статье объясняется, как формулировать запросы REST API в интерактивном режиме с помощью Когнитивный поиск Azure REST API.

Предварительные требования

Для использования расширения требуются следующие службы и средства.

Установка расширения

См. файл сведений на GitHub.

Подключение к подписке

Запустите Visual Studio COde.

Щелкните Вход в Azure и войдите в учетную запись Azure.

Вы должны увидеть свои подписки. На следующем снимке экрана указано имя подписки "Visual Studio Enterprise" и она содержит одну службу поиска с именем azsearch-service.

Подписки НА VS Code Azure

Чтобы ограничить количество отображаемых подписок, откройте палитру команд (нажмите клавиши CTRL+SHIFT+P или CMD+SHIFT+P) и выполните поиск по строке Azure или выбрать подписки. Существуют также команды для входа в учетную запись Azure и выхода из нее.

При развертывании службы поиска вы увидите элементы дерева для каждого элемента Когнитивного поиска: индексы, источники данных, индексаторы, наборы навыков, карты синонимов и псевдонимы.

Vs Code: дерево поиска Azure

Эти элементы дерева можно развернуть, чтобы отобразить все ресурсы, имеющиеся в службе поиска.

1\. Создание индекса

Чтобы создать индекс, используйте REST API создания индекса.

При использовании расширения VS Code вам нужно только составить текст запроса. В этом кратком руководстве предоставлен пример определения индекса и все соответствующие документы.

Определение индексов

Это определение содержит пример схемы для вымышленных гостиниц.

Коллекция fields определяет структуру документов в индексе поиска. Каждое поле имеет тип данных и ряд дополнительных атрибутов, которые определяют способ использования этого поля.

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

Чтобы создать новый индекс, щелкните правой кнопкой мыши Индексы и выберите Создать новый индекс. Откроется редактор примерно с таким именем: indexes-new-28c972f661.azsindex.

Вставьте в это окно приведенное выше определение индекса. Сохраните файл и выберите Отправить, когда появится запрос на обновление индекса. На этом шаге создается индекс и он добавляется в представление в виде дерева слева.

Анимация: создание индекса

Если возникла проблема с определением индекса, должно появиться сообщение об ошибке, аналогичное приведенному ниже.

Сообщение об ошибке создания индекса

При возникновении ошибки устраните проблему и повторно создайте файл.

2\. Загрузка документов

В REST API создание индекса и его заполнение выполняются отдельными шагами. В службе "Когнитивный поиск Azure" индекс содержит все данные с возможностью поиска. В этом кратком руководстве данные предоставляются в виде документов JSON. Для этой задачи используется REST API для добавления, обновления и удаления документов.

Чтобы добавить новые документы в индекс, выполните следующие действия.

  1. Разверните созданный индекс hotels-quickstart. Щелкните правой кнопкой мыши Документы и выберите Создать документ.

    Создание документа

  2. Вы увидите редактор JSON, который вычислил схему индекса.

    Создание документа JSON

  3. Вставьте следующий код JSON и сохраните файл. Появится запрос на подтверждение изменений. Выберите Отправить, чтобы сохранить изменения.

    {
        "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. Повторите эту процедуру для трех оставшихся документов:

    Документ 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"
        } 
    }
    

    Документ 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"
        } 
    }
    

    Документ 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"
        }
    }
    

Теперь все эти документы будут доступны в разделе с документами.

Состояние после отправки всех документов

3\. Поиск в индексе

Теперь, когда индекс содержит содержимое, можно выдавать запросы с помощью REST API поиска документов:

  1. Щелкните правой кнопкой мыши индекс, который требуется найти, и выберите Поиск. На этом шаге откроется редактор с именем, похожим на sandbox-b946dcda48.azs.

    Представление поиска в расширении

  2. Простой запрос заполняется автоматически. Нажмите клавиши CTRL+ALT+R или CMD+ALT+R, чтобы отправить этот запрос. Результаты запроса отобразятся в окне слева.

    Результаты поиска в расширении

Примеры запросов

Выполните еще несколько примеров запросов, чтобы ознакомиться с синтаксисом. Ниже приведены четыре дополнительных запроса, которые вы можете попробовать выполнить. В одно окно редактора можно добавить несколько запросов. При нажатии клавиш CTRL+ALT+R или CMD+ALT+R выполняется тот запрос, в строке с которым в этот момент находится курсор.

Параллельное отображение запросов и результатов

В первом запросе мы будем искать boutique и с помощью select выберем только определенные поля. Рекомендуется использовать select только для нужных вам полей, так как извлечение ненужных данных приведет к задержкам в запросах. Этот запрос также задает $count=true, чтобы получить общее число результатов поиска.

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

В следующем запросе укажите условие поиска wifi, а также включите фильтр, который возвращает результаты только в том случае, если состояние равно 'FL'. Результаты также упорядочиваются по данным отелей 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

Далее поиск ограничивается одним полем, поддерживающим поиск, с помощью параметра searchFields. Это отличный вариант, чтобы сделать запрос более эффективным, если вам требуются определенные поля.

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

Еще один распространенный параметр, включаемый в запрос, — facets. Аспекты позволяют создавать фильтры в приложении, чтобы пользователи могли легко узнать, к каким значениям они могут отфильтровать.

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

Открытие индекса на портале

Если вы хотите изучить индекс поиска на портале, щелкните имя службы поиска правой кнопкой мыши и выберите Открыть на портале.

Очистка ресурсов

Если вы работаете в своей подписке, по окончании проекта рекомендуем решить, нужны ли вам созданные ресурсы. Работающие ресурсы могут означать лишние затраты. Можно удалить отдельные ресурсы или удалить группу ресурсов, что позволит удалить весь набор ресурсов.

Просматривать ресурсы и управлять ими можно на портале с помощью ссылок Все ресурсы или Группы ресурсов на панели навигации слева.

При работе с бесплатной версией службы помните о том, что вам доступно максимум три индекса, индексатора и источника данных. Вы можете удалить отдельные элементы на портале, чтобы не превысить лимит.

Дальнейшие действия

Теперь, когда вы знаете, как выполнять основные задачи, можно перейти к дополнительным вызовам REST API для более сложных функций, таких как индексаторы или настройка конвейера обогащения , который добавляет преобразования содержимого в индексацию. Далее мы рекомендуем изучить следующие материалы: