Condividi tramite


Modificare ed eliminare il rilevamento mediante indicizzatori per Archiviazione di Azure in Azure AI Search

Dopo aver creato un indice di ricerca iniziale, è possibile che i processi successivi dell'indicizzatore 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 applicando timestamp predefiniti su oggetti e file di Archiviazione di Azure.

Sebbene il rilevamento delle modifiche sia scontato, non lo è quello delle eliminazioni. 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 prevede l'eliminazione dei documenti di ricerca per primi e l'eliminazione fisica in Archiviazione di Azure come secondo passaggio.

Esistono due modalità per implementare una strategia di eliminazione temporanea:

La strategia di rilevamento dell'eliminazione deve essere applicata dalla prima esecuzione dell'indicizzatore. Se non sono stati stabiliti i criteri di eliminazione prima dell'esecuzione iniziale, tutti i documenti eliminati prima dell'implementazione dei criteri rimarranno nell'indice, anche se i criteri vengono aggiunti in un secondo momento all'indicizzatore, reimpostandolo. In questo caso, è consigliabile creare un nuovo indice con un nuovo indicizzatore, assicurandosi che i criteri di eliminazione siano applicati dall'inizio.

Prerequisiti

  • Usare un indicizzatore di Archiviazione di Azure per Archiviazione BLOB, Archiviazione tabelle, Archiviazione file o Data Lake Storage Gen2

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

Nota

ADLS Gen2 consente di rinominare le directory. Quando una directory viene rinominata, i timestamp per i BLOB di tale directory non vengono aggiornati. Di conseguenza, l'indicizzatore non reindicizza 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 timestamp LastModified per tutti i BLOB nella directory, in modo che l'indicizzatore sia in grado di reindicizzarli inun'esecuzione futura. Non è possibile modificare le directory virtuali in Archiviazione BLOB di Azure, quindi esse non presentano questo problema.

Eliminazione temporanea del BLOB nativo

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

Requisiti per l'eliminazione temporanea nativa

  • I BLOB devono trovarsi in un contenitore di Archiviazione BLOB di Azure. I criteri di eliminazione temporanea dei BLOB nativi di Azure AI Search non sono supportati per i BLOB in ADLS Gen2 o in 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 un'API REST di anteprima come 2024-05-01-preview o la configurazione dell'origine dati dell'indicizzatore nel 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 da 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 Azure AI Search elimineranno un documento dall'indice solo se elabora il BLOB mentre è in uno stato di eliminazione temporanea.

In Azure AI Search, impostare nell'origine dati un criterio di rilevamento dell'eliminazione temporanea del BLOB nativo. È possibile eseguire questa operazione dal portale di Azure o usando un'API previewREST (2024-05-01-preview). Le istruzioni seguenti illustrano come impostare i criteri di rilevamento delle eliminazioni nel portale di Azure o tramite le API REST.

  1. Accedere al portale di Azure.

  2. Nella pagina Panoramica del servizio Azure AI Search, 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 della configurazione dell'origine dati in Importazione guidata dati.

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

    Screenshot dell'eliminazione temporanea nativa dell'origine dati del portale.

Reindicizzare i BLOB non eliminati usando criteri di eliminazione temporanea nativi

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

Per assicurarsi che un BLOB non eliminato venga reindicizzato, è necessario aggiornare il timestamp LastModified del BLOB. Un modo per eseguire questa operazione consiste nel salvare nuovamente i metadati del BLOB. Non è necessario modificare i metadati, ma il nuovo salvataggio dei metadati aggiornerà il timestamp LastModified del BLOB, in modo che l'indicizzatore sia informato che deve recuperarlo.

Strategia di eliminazione temporanea con metadati personalizzati

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

Questa funzionalità è disponibile a livello generale.

Esistono passaggi da seguire sia in Archiviazione di Azure che in Azure AI Search, ma non vi sono altre dipendenze dalle funzionalità.

  1. In Archiviazione di Azure, aggiungere una coppia personalizzata chiave-valore di metadati al file per indicare che è 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 Azure AI Search modificare la definizione dell'origine dati per includere una proprietà "dataDeletionDetectionPolicy". Il criterio illustrato di seguito, ad esempio, considera l'eliminazione di un BLOB se dispone di una proprietà di metadati IsDeleted con il valore true:

    PUT https://[service name].search.windows.net/datasources/file-datasource?api-version=2024-07-01
    {
        "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 da Archiviazione di Azure.

Reindicizzare BLOB e file non eliminati

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

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

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

  3. Eseguire l'indicizzatore.

Passaggi successivi