Změna a odstranění detekce pomocí indexerů pro Azure Storage ve službě Azure AI Search

Po vytvoření počátečního indexu vyhledávání můžete chtít, aby následné úlohy indexeru zabíraly jenom nové a změněné dokumenty. U indexovaného obsahu pocházejícího ze služby Azure Storage dochází k detekci změn automaticky, protože indexery sledují poslední aktualizaci pomocí předdefinovaných časových razítek u objektů a souborů ve službě Azure Storage.

I když je detekce změn daná, detekce odstranění není. Indexer nesleduje odstranění objektu ve zdrojích dat. Abyste se vyhnuli osamocenému hledání dokumentů, můžete implementovat strategii obnovitelného odstranění, která vede k prvnímu odstranění hledaných dokumentů s fyzickým odstraněním ve službě Azure Storage, která následuje v druhém kroku.

Existují dva způsoby implementace strategie obnovitelného odstranění:

Požadavky

  • Použití indexeru Azure Storage pro Blob Storage, Table Storage, File Storage nebo Data Lake Storage Gen2

  • Používejte konzistentní klíče dokumentů a strukturu souborů. Změna klíčů dokumentu nebo názvů adresářů a cest (platí pro ADLS Gen2) přeruší interní informace sledování používané indexery, aby věděly, který obsah se indexoval a kdy byl naposledy indexován.

Poznámka:

ADLS Gen2 umožňuje přejmenování adresářů. Při přejmenování adresáře se časové razítka objektů blob v daném adresáři neaktualizují. V důsledku toho indexer tyto objekty blob znovu neindexuje. Pokud potřebujete, aby se objekty blob v adresáři přeindexovaly po přejmenování adresáře, protože teď mají nové adresy URL, budete muset aktualizovat LastModified časové razítko pro všechny objekty blob v adresáři, aby indexer věděl, že je během budoucnosti znovu indexuje. Virtuální adresáře ve službě Azure Blob Storage nelze změnit, takže tento problém nemají.

Obnovitelné odstranění nativního objektu blob

V případě tohoto přístupu pro detekci odstranění služba Azure AI Search závisí na nativní funkci obnovitelného odstranění objektů blob ve službě Azure Blob Storage a určí, jestli se objekty blob přechádly do stavu obnovitelného odstranění. Když se v tomto stavu zjistí objekty blob, použije indexer vyhledávání tyto informace k odebrání odpovídajícího dokumentu z indexu.

Požadavky na nativní obnovitelné odstranění

  • Objekty blob musí být v kontejneru služby Azure Blob Storage. Zásady obnovitelného odstranění nativního objektu blob služby Azure AI Search nejsou podporované pro objekty blob v ADLS Gen2 nebo Azure Files.

  • Povolení obnovitelného odstranění objektů blob

  • Klíče dokumentů pro dokumenty v indexu se musí mapovat na vlastnost objektu blob nebo metadata objektů blob, jako je například "metadata_storage_path".

  • Ke konfiguraci podpory obnovitelného odstranění musíte použít rozhraní REST API (api-version=2023-11-01) nebo novější verzi nebo konfiguraci zdroje dat indexeru na webu Azure Portal.

  • Správa verzí objektů blob nesmí být v účtu úložiště povolená. V opačném případě není nativní obnovitelné odstranění podporováno návrhem.

Konfigurace nativního obnovitelného odstranění

Když v úložišti objektů blob povolíte obnovitelné odstranění podle požadavků, nastavte zásady uchovávání informací na hodnotu, která je mnohem vyšší než plán intervalu indexeru. Pokud dojde k problému se spuštěním indexeru nebo pokud máte velký počet dokumentů k indexování, existuje dostatek času, než indexer nakonec zpracuje obnovitelné odstraněné objekty blob. Indexery služby Azure AI Search odstraní z indexu jenom dokument, pokud zpracovává objekt blob v době, kdy je ve stavu obnovitelného odstranění.

Ve službě Azure AI Search nastavte nativní zásady detekce obnovitelného odstranění objektů blob ve zdroji dat. Můžete to udělat z webu Azure Portal pomocí rozhraní REST API (api-version=2023-11-01). Následující pokyny vysvětlují, jak nastavit zásady detekce odstranění na webu Azure Portal nebo prostřednictvím rozhraní REST API.

  1. Přihlaste se k portálu Azure.

  2. Na stránce Přehled služby Azure AI Search přejděte do části Nový zdroj dat, vizuální editor pro zadání definice zdroje dat.

    Následující snímek obrazovky ukazuje, kde tuto funkci najdete na portálu.

    Screenshot of data source configuration in Import Data wizard.

  3. Ve formuláři Nový zdroj dat vyplňte požadovaná pole, zaškrtněte políčko Sledovat odstranění a zvolte Nativní obnovitelné odstranění objektu blob. Pak stiskněte uložit a povolte funkci při vytváření zdroje dat.

    Screenshot of portal data source native soft delete.

Přeindexování nedeletovaných objektů blob pomocí nativních zásad obnovitelného odstranění

Pokud obnovíte obnovitelně odstraněný objekt blob v úložišti objektů blob, indexer ho nebude vždy znovu indexovat. Důvodem je to, že indexer používá časové razítko objektu blob LastModified k určení, jestli je indexování potřeba. Pokud se obnovitelně odstraněný objekt blob neaktualizuje, časové LastModified razítko se neaktualizuje, takže pokud indexer už zpracoval objekty blob s novějšími LastModified časovými razítky, nepřeindexuje nedeletovaný objekt blob.

Abyste měli jistotu, že se neindexovaný objekt blob přeindexuje, budete muset aktualizovat časové razítko objektu LastModified blob. Jedním ze způsobů, jak to udělat, je opětovné uložení metadat tohoto objektu blob. Metadata nemusíte měnit, ale při opětovném uložení metadat se časové razítko objektu blob LastModified aktualizuje, aby ho indexer věděl, že ho vyzvedne.

Strategie obnovitelného odstranění s využitím vlastních metadat

Tato metoda používá vlastní metadata k označení, zda má být vyhledávací dokument odebrán z indexu. Vyžaduje dvě samostatné akce: odstranění vyhledávacího dokumentu z indexu následované odstraněním souboru ve službě Azure Storage.

V Azure Storage i službě Azure AI Search je potřeba postupovat podle kroků, ale neexistují žádné další závislosti funkcí.

  1. Ve službě Azure Storage přidejte do souboru dvojici klíč-hodnota vlastních metadat, která indikuje, že se soubor označí příznakem pro odstranění. Můžete například pojmenovat vlastnost IsDeleted, která je nastavená na hodnotu false. Pokud chcete soubor odstranit, změňte ho na true.

  2. Ve službě Azure AI Search upravte definici zdroje dat tak, aby zahrnovala vlastnost dataDeletionDetectionPolicy. Následující zásada například považuje soubor za odstraněný, pokud má vlastnost IsDeleted metadat s hodnotou 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. Spusťte indexer. Jakmile indexer zpracuje soubor a odstraní dokument z indexu vyhledávání, můžete fyzický soubor odstranit ve službě Azure Storage.

Přeindexovat nedeletované objekty blob a soubory

Obnovitelné odstranění můžete vrátit zpět, pokud původní zdrojový soubor stále fyzicky existuje ve službě Azure Storage.

  1. Změňte objekt "softDeleteMarkerValue" : "false" blob nebo soubor ve službě Azure Storage.

  2. Zkontrolujte časové razítko objektu blob nebo souboru LastModified , aby bylo novější než poslední spuštění indexeru. Aktualizaci aktuálního data a času můžete vynutit opětovným uložením existujících metadat.

  3. Spusťte indexer.

Další kroky