Indexdata från Azure Files

Viktigt!

Azure Files-indexeraren är för närvarande i offentlig förhandsversion under kompletterande användningsvillkor. Använd ett REST API för förhandsversion (2020-06-30-preview eller senare) för att skapa indexerarens datakälla.

I den här artikeln lär du dig hur du konfigurerar en indexerare som importerar innehåll från Azure Files och gör det sökbart i Azure AI Search. Indata till indexeraren är dina filer i en enda resurs. Utdata är ett sökindex med sökbart innehåll och metadata som lagras i enskilda fält.

Den här artikeln kompletterar Skapa en indexerare med information som är specifik för indexering av filer i Azure Storage. Den använder REST-API:er för att demonstrera ett arbetsflöde i tre delar som är gemensamt för alla indexerare: skapa en datakälla, skapa ett index, skapa en indexerare. Dataextrahering sker när du skickar begäran skapa indexerare.

Förutsättningar

  • Azure Files, transaktionsoptimerad nivå.

  • En SMB-filresurs som tillhandahåller källinnehållet. NFS-resurser stöds inte.

  • Filer som innehåller text. Om du har binära data kan du inkludera AI-berikning för bildanalys.

  • Läsbehörigheter för Azure Storage. En "fullständig åtkomst" anslutningssträng innehåller en nyckel som ger åtkomst till innehållet.

  • Använd en REST-klient för att formulera REST-anrop som liknar dem som visas i den här artikeln.

Dokumentformat som stöds

Azure Files-indexeraren kan extrahera text från följande dokumentformat:

Så här indexeras Azure Files

Som standard indexeras de flesta filer som ett enda sökdokument i indexet, inklusive filer med strukturerat innehåll, till exempel JSON eller CSV, som indexeras som ett enda textsegment.

Ett sammansatt eller inbäddat dokument (till exempel ett ZIP-arkiv, ett Word-dokument med inbäddad Outlook-e-post som innehåller bifogade filer eller en . MSG-fil med bifogade filer) indexeras också som ett enda dokument. Till exempel alla bilder som extraherats från bifogade filer i en . MSG-filen returneras i fältet normalized_images. Om du har bilder kan du överväga att lägga till AI-berikning för att få mer sökverktyg från det innehållet.

Textinnehåll i ett dokument extraheras till ett strängfält med namnet "content". Du kan också extrahera standard- och användardefinierade metadata.

Definiera datakällan

Datakällans definition anger vilka data som ska indexeras, autentiseringsuppgifter och principer för att identifiera ändringar i data. En datakälla definieras som en oberoende resurs så att den kan användas av flera indexerare.

  1. Skapa eller uppdatera en datakälla för att ange dess definition med hjälp av en förhandsversion av API version 2020-06-30-Preview eller senare för "type": "azurefile".

    {
        "name" : "my-file-datasource",
        "type" : "azurefile",
        "credentials" : { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>;" },
        "container" : { "name" : "my-file-share", "query" : "<optional-directory-name>" }
    }
    
  2. Ange "typ" till "azurefile" (krävs).

  3. Ange "autentiseringsuppgifter" till en Azure Storage-anslutningssträng. I nästa avsnitt beskrivs de format som stöds.

  4. Ange "container" till rotfilresursen och använd "fråga" för att ange eventuella undermappar.

En datakällsdefinition kan också innehålla principer för mjuk borttagning om du vill att indexeraren ska ta bort ett sökdokument när källdokumentet flaggas för borttagning.

Autentiseringsuppgifter och anslutningssträng som stöds

Indexerare kan ansluta till en filresurs med hjälp av följande anslutningar.

Lagringskonto med fullständig åtkomst anslutningssträng
{ "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<your storage account>;AccountKey=<your account key>;" }
Du kan hämta anslutningssträng från sidan Lagringskonto i Azure-portalen genom att välja Åtkomstnycklar i det vänstra navigeringsfönstret. Se till att välja en fullständig anslutningssträng och inte bara en nyckel.

Lägga till sökfält i ett index

I sökindexet lägger du till fält för att acceptera innehållet och metadata för dina Azure-filer.

  1. Skapa eller uppdatera ett index för att definiera sökfält som lagrar filinnehåll och metadata:

    POST /indexes?api-version=2020-06-30
    {
      "name" : "my-search-index",
      "fields": [
          { "name": "ID", "type": "Edm.String", "key": true, "searchable": false },
          { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false },
          { "name": "metadata_storage_name", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true  },
          { "name": "metadata_storage_path", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true },
          { "name": "metadata_storage_size", "type": "Edm.Int64", "searchable": false, "filterable": true, "sortable": true  },
          { "name": "metadata_storage_content_type", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true }        
      ]
    }
    
  2. Skapa ett dokumentnyckelfält ("nyckel": sant). För blobinnehåll är de bästa kandidaterna metadataegenskaper. Metadataegenskaper innehåller ofta tecken, till exempel och -, som / är ogiltiga för dokumentnycklar. Eftersom indexeraren har egenskapen "base64EncodeKeys" (sant som standard) kodas metadataegenskapen automatiskt utan att det krävs någon konfiguration eller fältmappning.

    • metadata_storage_path (standard) fullständig sökväg till objektet eller filen

    • metadata_storage_name kan endast användas om namn är unika

    • En anpassad metadataegenskap som du lägger till i blobar. Det här alternativet kräver att blobuppladdningsprocessen lägger till metadataegenskapen till alla blobar. Eftersom nyckeln är en obligatorisk egenskap kan blobbar som saknar ett värde inte indexeras. Om du använder en anpassad metadataegenskap som en nyckel bör du undvika att göra ändringar i den egenskapen. Indexerare lägger till duplicerade dokument för samma blob om nyckelegenskapen ändras.

  3. Lägg till ett "innehållsfält" för att lagra extraherad text från varje fil via blobens "innehållsegenskap". Du behöver inte använda det här namnet, men om du gör det kan du dra nytta av implicita fältmappningar.

  4. Lägg till fält för standardmetadataegenskaper. I filindexering är standardmetadataegenskaperna samma som egenskaper för blobmetadata. Azure Files-indexeraren skapar automatiskt interna fältmappningar för dessa egenskaper som konverterar avstavade egenskapsnamn till understreckade egenskapsnamn. Du måste fortfarande lägga till de fält som du vill använda indexdefinitionen, men du kan utelämna att skapa fältmappningar i datakällan.

    • metadata_storage_name (Edm.String) – filnamnet. Om du till exempel har en fil /my-share/my-folder/subfolder/resume.pdf är resume.pdfvärdet för det här fältet .
    • metadata_storage_path (Edm.String) – filens fullständiga URI, inklusive lagringskontot. Till exempel: https://myaccount.file.core.windows.net/my-share/my-folder/subfolder/resume.pdf
    • metadata_storage_content_type (Edm.String) – innehållstyp enligt den kod som du använde för att ladda upp filen. Exempel: application/octet-stream
    • metadata_storage_last_modified (Edm.DateTimeOffset) – senast ändrad tidsstämpel för filen. Azure AI Search använder den här tidsstämpeln för att identifiera ändrade filer för att undvika att indexera om allt efter den första indexeringen.
    • metadata_storage_size (Edm.Int64) – filstorlek i byte.
    • metadata_storage_content_md5 (Edm.String) – MD5-hash för filinnehållet, om det är tillgängligt.
    • metadata_storage_sas_token (Edm.String) – En tillfällig SAS-token som kan användas av anpassade kunskaper för att få åtkomst till filen. Den här token bör inte lagras för senare användning eftersom den kan upphöra att gälla.

Konfigurera och köra Azure Files-indexeraren

När indexet och datakällan har skapats är du redo att skapa indexeraren. Indexerarens konfiguration anger indata, parametrar och egenskaper som styr körningstidsbeteenden.

  1. Skapa eller uppdatera en indexerare genom att ge den ett namn och referera till datakällan och målindexet:

    POST https://[service name].search.windows.net/indexers?api-version=2020-06-30
    {
      "name" : "my-file-indexer",
      "dataSourceName" : "my-file-datasource",
      "targetIndexName" : "my-search-index",
      "parameters": {
         "batchSize": null,
         "maxFailedItems": null,
         "maxFailedItemsPerBatch": null,
         "base64EncodeKeys": null,
         "configuration": {
            "indexedFileNameExtensions" : ".pdf,.docx",
            "excludedFileNameExtensions" : ".png,.jpeg" 
        }
      },
      "schedule" : { },
      "fieldMappings" : [ ]
    }
    
  2. I det valfria avsnittet "konfiguration" anger du eventuella inkluderings- eller exkluderingsvillkor. Om det lämnas ospecificerat hämtas alla filer i filresursen.

    Om både indexedFileNameExtensions och excludedFileNameExtensions parametrar finns tittar Azure AI Search först på indexedFileNameExtensionsoch sedan på excludedFileNameExtensions. Om samma filnamnstillägg finns i båda listorna undantas det från indexering.

  3. Ange fältmappningar om det finns skillnader i fältnamn eller typ, eller om du behöver flera versioner av ett källfält i sökindexet.

    I filindexering kan du ofta utelämna fältmappningar eftersom indexeraren har inbyggt stöd för att mappa egenskaperna "innehåll" och metadata till fält med liknande namn och typ i ett index. För metadataegenskaper ersätter indexeraren automatiskt bindestreck - med understreck i sökindexet.

  4. Mer information om andra egenskaper finns i Skapa en indexerare .

En indexerare körs automatiskt när den skapas. Du kan förhindra detta genom att ange "inaktiverad" till true. Om du vill kontrollera indexerarens körning kör du en indexerare på begäran eller sätter den enligt ett schema.

Kontrollera status för indexerare

Om du vill övervaka indexerarens status och körningshistorik skickar du en get indexer-statusbegäran :

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2020-06-30
  Content-Type: application/json  
  api-key: [admin key]

Svaret innehåller status och antalet bearbetade objekt. Det bör se ut ungefär som i följande exempel:

    {
        "status":"running",
        "lastResult": {
            "status":"success",
            "errorMessage":null,
            "startTime":"2022-02-21T00:23:24.957Z",
            "endTime":"2022-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        "executionHistory":
        [
            {
                "status":"success",
                "errorMessage":null,
                "startTime":"2022-02-21T00:23:24.957Z",
                "endTime":"2022-02-21T00:36:47.752Z",
                "errors":[],
                "itemsProcessed":1599501,
                "itemsFailed":0,
                "initialTrackingState":null,
                "finalTrackingState":null
            },
            ... earlier history items
        ]
    }

Körningshistoriken innehåller upp till 50 av de senast slutförda körningarna, som sorteras i omvänd kronologisk ordning så att den senaste körningen kommer först.

Nästa steg

Nu kan du köra indexeraren, övervaka status eller schemalägga indexerarens körning. Följande artiklar gäller för indexerare som hämtar innehåll från Azure Storage: