Search code examples
azure-functionsazure-cognitive-search

I need to add a custom skillset to a Cognitive Search index, but it can't see my Azure Function app


I've create an Azure Function App that I wish to use as a custom skillset. I can run this function and it seems good to go. When I go to the portal and hit the Add Skillset page, I choose Custom Web API Skill - Azure Functions. The drop down however doesn't show any Function Apps as available in the drop down. What am I missing?

I've added the Search Service principal to Reader access on the Function App. Is there something else I need to do?


Solution

  • As I suggested in the comments, it looks like that only dotnet azure function apps are supported for creating a skill set directly from the portal's cognitive search skill set dropdown. After a workaround on it, I found an alternative which is creating a custom web Api skill set manually by adding Uri and specific json inputs and outputs as detailed in MSDoc.

    I've added the sample template under skillset definition (Json) to call an Azure Python runtime function by passing the function app Url in place uri property below as follows.

    "skills": [
    {
    "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
    "name": "",
    "description": "This skill calls an Azure function",
    "context": "/document/orgs/*",
    "uri": "https://pythoncognitive.azurewebsites.net",
    "httpMethod": "POST",
    "timeout": "PT60S",
    "batchSize": 1000,
    "inputs":[],
    "outputs"[]
    }
    

    enter image description here

    Skillset added successfully:

    enter image description here

    Note: You can also use Rest Api to create a skill set as given in MSDoc.