Поделиться через


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

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

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

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

Предпосылки

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

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

См. раздел Readme на сайте Github.

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

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

Выберите вход в Azure... и войдите в учетную запись Azure.

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

Подписки Azure в VS Code

Чтобы ограничить отображаемые подписки, откройте палитру команд (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.

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

GIF-файл создания индекса

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

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

Если возникает ошибка, устраните её и сохраните файл заново.

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 для более сложных функций, таких как индексаторы или настройка конвейера обогащения , который добавляет преобразования содержимого в индексирование. Для следующего шага мы рекомендуем использовать следующую ссылку: