【Azure AI Search】インデックスキー1024文字上限対応 | 夕湖津のブログ

夕湖津のブログ

問題解決に役立つ情報の提供を目指します

■結論(色々試行錯誤した結果、これに落ち着きました)

id列を追加して、インデクサーに下記を入れてみて下さい。

 

 

  "parameters": {

    "batchSize": null,

    "maxFailedItems": null,

    "maxFailedItemsPerBatch": null,

    "base64EncodeKeys": null,

    "configuration": {

      "imageAction": "generateNormalizedImages",

      "allowSkillsetToReadFileData": true

    }

  },

  "fieldMappings": [

    {

      "sourceFieldName": "metadata_storage_path",

      "targetFieldName": "id",

      "mappingFunction": {

        "name": "fixedLengthEncode",

        "parameters": null

      }

    }

  ]

 

■想定ケース

1.Azure AI Search画面の「データのインポート」からインデックスを作成するケース

2.BLOBファイルパスがかなり長く、metadata_storage_pathが1024文字オーバするケース

 

■手順

①ひとまずmetadata_storage_pathがキーとなるインデックスを作成

Search Service画面上部の「データのインポート」から、データソースを該当のBLOBストレージのコンテナ指定で、インデックスを登録

フィールドは下記(あくまでも例です)

 

 

※登録時は、「エンリッチメントの追加」から「OCRを有効にし、すべてのテキストをmereged_contentフィールドにマージする」を選択すると、

スキルセットが自動作成されて無難です。

 

②インデック画面上部の「インデックスの追加」から、id列を追加した下記フィールドを作成して

そのまま進行

恐らく、インデクサーの生成でエラーになると思いますが、無視します。

 

③上記①で登録したインデクサーの下記を編集

 

  "fieldMappings": [

    {

      "sourceFieldName": "metadata_storage_path",

      "targetFieldName": "id",

      "mappingFunction": {

        "name": "fixedLengthEncode",

        "parameters": null

      }

    }

  ],

  "outputFieldMappings": [

    {

      "sourceFieldName": "/document/merged_content",

      "targetFieldName": "merged_content"

    }

  ],

 

保存した後、「リセット」→「実行」で完了