Modificare ed eliminare il rilevamento usando indicizzatori per Archiviazione di Azure in Ricerca di intelligenza artificiale di Azure

Dopo aver creato un indice di ricerca iniziale, è possibile che i processi dell'indicizzatore successivi rilevino solo documenti nuovi e modificati. Per il contenuto indicizzato che ha origine da Archiviazione di Azure, il rilevamento delle modifiche viene eseguito automaticamente perché gli indicizzatori tengono traccia dell'ultimo aggiornamento usando i timestamp predefiniti su oggetti e file in Archiviazione di Azure.

Anche se il rilevamento delle modifiche è un dato, il rilevamento dell'eliminazione non è. Un indicizzatore non tiene traccia dell'eliminazione di oggetti nelle origini dati. Per evitare di avere documenti di ricerca orfani, è possibile implementare una strategia di eliminazione temporanea che comporta innanzitutto l'eliminazione dei documenti di ricerca, con l'eliminazione fisica in Archiviazione di Azure come secondo passaggio.

Esistono due modi per implementare una strategia di eliminazione temporanea:

Prerequisiti

  • Usare un indicizzatore di Archiviazione di Azure per blob Archiviazione, Archiviazione di tabella, file Archiviazione o Data Lake Archiviazione Gen2

  • Usare chiavi di documento coerenti e struttura di file. La modifica di chiavi documento o nomi di directory e percorsi (si applica ad ADLS Gen2) interrompe le informazioni di rilevamento interne usate dagli indicizzatori per sapere quale contenuto è stato indicizzato e quando è stato indicizzato per l'ultima volta.

Nota

ADLS Gen2 consente di rinominare le directory. Quando una directory viene rinominata, i timestamp per i BLOB in tale directory non vengono aggiornati. Di conseguenza, l'indicizzatore non ri indicizza tali BLOB. Se è necessario reindicizzare i BLOB in una directory dopo la ridenominazione di una directory perché ora hanno nuovi URL, sarà necessario aggiornare il LastModified timestamp per tutti i BLOB nella directory in modo che l'indicizzatore sappia ri-indicizzarli durante un'esecuzione futura. Le directory virtuali in Archiviazione BLOB di Azure non possono essere modificate, pertanto non presentano questo problema.

Eliminazione temporanea del BLOB nativo

Per questo approccio di rilevamento dell'eliminazione, Ricerca di intelligenza artificiale di Azure dipende dalla funzionalità di eliminazione temporanea del BLOB nativo in Archiviazione BLOB di Azure per determinare se i BLOB sono passati a uno stato eliminato temporaneo. Quando vengono rilevati BLOB in questo stato, un indicizzatore di ricerca usa queste informazioni per rimuovere il documento corrispondente dall'indice.

Requisiti per l'eliminazione temporanea nativa

  • I BLOB devono trovarsi in un contenitore Archiviazione BLOB di Azure. I criteri di eliminazione temporanea dei BLOB nativi di Ricerca intelligenza artificiale di Azure non sono supportati per i BLOB in ADLS Gen2 o File di Azure.

  • Abilitare l'eliminazione temporanea per i BLOB.

  • Le chiavi del documento per i documenti nell'indice devono essere mappate come una proprietà BLOB o metadati BLOB, ad esempio "metadata_storage_path".

  • Per configurare il supporto per l'eliminazione temporanea, è necessario usare l'API REST (api-version=2023-11-01) o la versione più recente o la configurazione dell'origine dati dell'indicizzatore nella portale di Azure.

  • Il controllo delle versioni dei BLOB non deve essere abilitato nell'account di archiviazione. In caso contrario, l'eliminazione temporanea nativa non è supportata dalla progettazione.

Configurare l'eliminazione temporanea nativa

In Archiviazione BLOB, quando si abilita l'eliminazione temporanea in base ai requisiti, impostare i criteri di conservazione su un valore molto superiore rispetto alla pianificazione dell'intervallo dell'indicizzatore. Se si verifica un problema durante l'esecuzione dell'indicizzatore o se si dispone di un numero elevato di documenti da indicizzare, è necessario che l'indicizzatore esegua l'elaborazione dei BLOB eliminati temporaneamente. Gli indicizzatori di Ricerca intelligenza artificiale di Azure elimineranno un documento dall'indice solo se elabora il BLOB mentre è in uno stato eliminato temporaneamente.

In Ricerca di intelligenza artificiale di Azure impostare un criterio di rilevamento dell'eliminazione temporanea del BLOB nativo nell'origine dati. È possibile eseguire questa operazione dalla portale di Azure usando l'API REST (api-version=2023-11-01). Le istruzioni seguenti illustrano come impostare i criteri di rilevamento di eliminazione in portale di Azure o tramite le API REST.

  1. Accedere al portale di Azure.

  2. Nella pagina Panoramica di Azure AI servizio di ricerca passare a Nuova origine dati, un editor visivo per specificare una definizione di origine dati.

    Lo screenshot seguente mostra dove è possibile trovare questa funzionalità nel portale.

    Screenshot of data source configuration in Import Data wizard.

  3. Nel modulo Nuova origine dati compilare i campi obbligatori, selezionare la casella di controllo Rileva eliminazioni e scegliere Eliminazione temporanea BLOB nativo. Fare quindi clic su Salva per abilitare la funzionalità nella creazione dell'origine dati.

    Screenshot of portal data source native soft delete.

Reindicizzare i BLOB non eliminati usando criteri di eliminazione temporanea nativi

Se si ripristina un BLOB eliminato leggero nell'archivio BLOB, l'indicizzatore non lo reindicerà sempre. Ciò è dovuto al fatto che l'indicizzatore usa il timestamp del LastModified BLOB per determinare se è necessaria l'indicizzazione. Quando un BLOB eliminato temporaneamente non viene eliminato, il LastModified timestamp non viene aggiornato, quindi se l'indicizzatore ha già elaborato BLOB con timestamp più recenti LastModified , non reindicirà il BLOB non eliminato.

Per assicurarsi che un BLOB non recapitato venga reindicizzato, è necessario aggiornare il timestamp del LastModified BLOB. Un modo per eseguire questa operazione consiste nel ricampionare i metadati del BLOB. Non è necessario modificare i metadati, ma il ricampionare i metadati aggiornerà il timestamp del LastModified BLOB in modo che l'indicizzatore sappia di recuperarlo.

Strategia di eliminazione temporanea con metadati personalizzati

Questo metodo usa metadati personalizzati per indicare se un documento di ricerca deve essere rimosso dall'indice. Richiede due azioni separate: l'eliminazione del documento di ricerca dall'indice, seguita dall'eliminazione di file in Archiviazione di Azure.

Esistono passaggi da seguire sia in Archiviazione di Azure che in Ricerca di intelligenza artificiale di Azure, ma non esistono altre dipendenze delle funzionalità.

  1. In Archiviazione di Azure aggiungere una coppia chiave-valore di metadati personalizzata al file per indicare che il file è contrassegnato per l'eliminazione. Ad esempio, è possibile denominare la proprietà "IsDeleted", impostata su false. Quando si desidera eliminare il file, modificarlo in true.

  2. In Ricerca di intelligenza artificiale di Azure modificare la definizione dell'origine dati per includere una proprietà "dataDeletionDetectionPolicy". Ad esempio, il criterio seguente considera un file da eliminare se ha una proprietà IsDeleted di metadati con il valore true:

    PUT https://[service name].search.windows.net/datasources/file-datasource?api-version=2020-06-30
    {
        "name" : "file-datasource",
        "type" : "azurefile",
        "credentials" : { "connectionString" : "<your storage connection string>" },
        "container" : { "name" : "my-share", "query" : null },
        "dataDeletionDetectionPolicy" : {
            "@odata.type" :"#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
            "softDeleteColumnName" : "IsDeleted",
            "softDeleteMarkerValue" : "true"
        }
    }
    
  3. Eseguire l'indicizzatore. Dopo che l'indicizzatore ha elaborato il file ed eliminato il documento dall'indice di ricerca, è possibile eliminare il file fisico in Archiviazione di Azure.

Reindicizzare BLOB e file non recapitati

È possibile invertire un'eliminazione temporanea se il file di origine originale esiste ancora fisicamente in Archiviazione di Azure.

  1. Modificare nel "softDeleteMarkerValue" : "false" BLOB o nel file in Archiviazione di Azure.

  2. Controllare il timestamp del BLOB o del LastModified file per renderlo più recente dell'ultima esecuzione dell'indicizzatore. È possibile forzare un aggiornamento alla data e all'ora correnti ricampionando i metadati esistenti.

  3. Eseguire l'indicizzatore.

Passaggi successivi