Можно ли использовать метаданные в качестве входных данных для пользовательского навыка в лазурном поиске? - PullRequest
0 голосов
/ 04 января 2019

Я начал работать с поиском Azure пару месяцев назад, но у меня возникла проблема с метаданными blobfiles.

Мне нужны метаданные файла (поступающего из BLOB-объекта Azure), чтобы использовать его в моем пользовательском навыке. (Более конкретно, мне нужен URL-адрес blobfile, где он хранится).

Для этого мне нужно это в моем наборе навыков, я бы сделал что-то вроде этого изображения . Но это невозможно, потому что источник должен начинаться с / document? Если я сделаю « / document / metadata_storage_path / » как « Source », я получу нулевое значение в конце?

Есть ли способ получить метаданные файла в качестве входных данных для дальнейшего использования?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Я обнаружил, почему это (и решения) не работает для меня. Я надеюсь, что смогу помочь другим, кто столкнулся с этой проблемой.

Синтаксис, упомянутый выше Sophiac , был правильным. Поэтому в моем случае я использовал «metadata_storage_path» в качестве входных данных в наборе навыков:

{
      "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
      "description": "Our new substring custom skill",
      "uri": "https://customskillsubstring.azurewebsites.net/api/Translate?code=OkzL7G3wX----jCqQylUyJJPaggSaFQCaQ==",
      "batchSize":1,
      "context": "/document",
      "inputs": [
        {
          "name": "text", "source": "/document/metadata_storage_path"
        }
      ],
      "outputs": [
        {
          "name": "text",
          "targetName": "metadata_storage_path_wathever"
        }
      ]
    }

Проблема была в индексаторе. Я сопоставил в поле сопоставление «metadata_storage_path» с чем-то другим (в моем случае «blob_uri»). Проблема в том, что на самом деле это не отображение, а скорее замена. Таким образом, metadata_storage_path был пуст в наборе навыков, потому что он уже был заменен.

Но если я использую "blob_uri", это работает. Решение состоит в том, что вы можете сопоставить один вход с более чем одним в индексаторе:

"fieldMappings" : [
        {
          "sourceFieldName" : "metadata_storage_name",
          "targetFieldName" : "id",
          "mappingFunction" :
            { "name" : "base64Encode" }
        },
        {
          "sourceFieldName" : "content",
          "targetFieldName" : "content"
        },
        {
          "sourceFieldName" : "metadata_storage_path",
          "targetFieldName" : "blob_uri"
        },
        {
          "sourceFieldName" : "metadata_storage_path",
          "targetFieldName" : "metadata_storage_path"
        }
   ], 

Теперь я могу использовать «blob_uri» и «metadata_storage_path» в качестве входных данных для моего пользовательского навыка.

0 голосов
/ 09 января 2019

Я думаю, что ваш исходный путь должен быть "/ document / metadata_storage_path" без лишних "/" в конце. С дополнительным «/» исходный путь интерпретируется как каталог внутри metadata_storage_path с именем «» (пустая строка).

...