Detectie wijzigen en verwijderen met indexeerfuncties voor Azure Storage in Azure AI Search

Nadat een initiële zoekindex is gemaakt, wilt u mogelijk dat volgende indexeertaken alleen nieuwe en gewijzigde documenten ophalen. Voor geïndexeerde inhoud die afkomstig is van Azure Storage, vindt wijzigingsdetectie automatisch plaats omdat indexeerfuncties de laatste update bijhouden met behulp van de ingebouwde tijdstempels voor objecten en bestanden in Azure Storage.

Hoewel wijzigingsdetectie een gegeven is, is verwijderingsdetectie niet. Een indexeerfunctie houdt het verwijderen van objecten niet bij in gegevensbronnen. Als u zwevende zoekdocumenten wilt voorkomen, kunt u een 'voorlopig verwijderen'-strategie implementeren die resulteert in het verwijderen van zoekdocumenten eerst, met fysieke verwijdering in Azure Storage als een tweede stap.

Er zijn twee manieren om een strategie voor voorlopig verwijderen te implementeren:

Vereisten

  • Een Azure Storage-indexeerfunctie gebruiken voor Blob Storage, Table Storage, File Storage of Data Lake Storage Gen2

  • Gebruik consistente documentsleutels en bestandsstructuur. Als u documentsleutels of mapnamen en -paden wijzigt (van toepassing op ADLS Gen2), wordt de interne traceringsgegevens die door indexeerfuncties worden gebruikt, verbroken om te weten welke inhoud is geïndexeerd en wanneer deze voor het laatst is geïndexeerd.

Notitie

MET ADLS Gen2 kunnen directory's de naam wijzigen. Wanneer de naam van een map wordt gewijzigd, worden de tijdstempels voor de blobs in die map niet bijgewerkt. Als gevolg hiervan zal de indexeerfunctie deze blobs niet opnieuw indexeren. Als u wilt dat de blobs in een map opnieuw worden geïndexeerd nadat de naam van een map is gewijzigd omdat ze nu nieuwe URL's hebben, moet u de LastModified tijdstempel voor alle blobs in de map bijwerken, zodat de indexeerfunctie weet dat deze opnieuw moeten worden geïndexeerd tijdens een toekomstige uitvoering. De virtuele mappen in Azure Blob Storage kunnen niet worden gewijzigd, dus ze hebben dit probleem niet.

Systeemeigen blob voorlopig verwijderen

Voor deze detectiebenadering voor verwijdering is Azure AI Search afhankelijk van de systeemeigen functie voor voorlopig verwijderen van blobs in Azure Blob Storage om te bepalen of blobs zijn overgezet naar een voorlopig verwijderde status. Wanneer blobs in deze status worden gedetecteerd, gebruikt een zoekindexeerfunctie deze informatie om het bijbehorende document uit de index te verwijderen.

Vereisten voor systeemeigen voorlopig verwijderen

  • Blobs moeten zich in een Azure Blob Storage-container bevinden. Het systeemeigen blobbeleid van Azure AI Search voor voorlopig verwijderen wordt niet ondersteund voor blobs in ADLS Gen2 of Azure Files.

  • Schakel voorlopig verwijderen in voor blobs.

  • Documentsleutels voor de documenten in uw index moeten zijn toegewezen aan een blob-eigenschap of blobmetagegevens, zoals 'metadata_storage_path'.

  • U moet de REST API (api-version=2023-11-01) of nieuwere versie of de configuratie van de indexeerfunctiegegevensbron in Azure Portal gebruiken om ondersteuning voor voorlopig verwijderen te configureren.

  • Blob-versiebeheer mag niet zijn ingeschakeld in het opslagaccount. Anders wordt systeemeigen voorlopig verwijderen niet ondersteund door ontwerp.

Systeemeigen voorlopig verwijderen configureren

Als u voorlopig verwijderen inschakelt in Blob Storage volgens de vereisten, stelt u het bewaarbeleid in op een waarde die veel hoger is dan het intervalschema van de indexeerfunctie. Als er een probleem is met het uitvoeren van de indexeerfunctie of als u een groot aantal documenten hebt om te indexeren, is er voldoende tijd voor de indexeerfunctie om uiteindelijk de voorlopig verwijderde blobs te verwerken. Azure AI Search-indexeerfuncties verwijderen alleen een document uit de index als deze de blob verwerkt terwijl het een voorlopig verwijderde status heeft.

Stel in Azure AI Search een systeemeigen detectiebeleid voor voorlopig verwijderen van blobs in op de gegevensbron. U kunt dit doen vanuit Azure Portal met behulp van REST API (api-version=2023-11-01). In de volgende instructies wordt uitgelegd hoe u het detectiebeleid voor verwijderen instelt in Azure Portal of via REST API's.

  1. Meld u aan bij de Azure-portal.

  2. Ga op de pagina Overzicht van Azure AI Search-service naar Nieuwe gegevensbron, een visuele editor voor het opgeven van een gegevensbrondefinitie.

    In de volgende schermopname ziet u waar u deze functie kunt vinden in de portal.

    Screenshot of data source configuration in Import Data wizard.

  3. Vul in het formulier Nieuwe gegevensbron de vereiste velden in, schakel het selectievakje Verwijderingen bijhouden in en kies Systeemeigen blob voorlopig verwijderen. Druk vervolgens op Opslaan om de functie voor het maken van gegevensbronnen in te schakelen.

    Screenshot of portal data source native soft delete.

Opnieuw indexeren van niet-verwijderde blobs met systeemeigen beleid voor voorlopig verwijderen

Als u een voorlopig verwijderde blob herstelt in Blob Storage, wordt deze niet altijd opnieuw geïndexteerd door de indexeerfunctie. Dit komt doordat de indexeerfunctie de tijdstempel van LastModified de blob gebruikt om te bepalen of indexering nodig is. Wanneer een voorlopig verwijderde blob ongedaan wordt gemaakt, LastModified wordt de tijdstempel niet bijgewerkt, dus als de indexeerfunctie al blobs met recentere LastModified tijdstempels heeft verwerkt, wordt de niet-verwijderde blob niet opnieuw geïndexeerd.

Als u ervoor wilt zorgen dat een niet-verwijderde blob opnieuw wordt geïndexeerd, moet u de tijdstempel van LastModified de blob bijwerken. Een manier om dit te doen, is door de metagegevens van die blob op te halen. U hoeft de metagegevens niet te wijzigen, maar als u de metagegevens opneemt, wordt de tijdstempel van LastModified de blob bijgewerkt, zodat de indexeerfunctie weet dat deze moet worden opgehaald.

Strategie voor voorlopig verwijderen met aangepaste metagegevens

Deze methode maakt gebruik van aangepaste metagegevens om aan te geven of een zoekdocument uit de index moet worden verwijderd. Hiervoor zijn twee afzonderlijke acties vereist: het zoekdocument uit de index verwijderen, gevolgd door het verwijderen van bestanden in Azure Storage.

Er zijn stappen die u moet volgen in Zowel Azure Storage als Azure AI Search, maar er zijn geen andere functieafhankelijkheden.

  1. Voeg in Azure Storage een aangepast sleutel-waardepaar met metagegevens toe aan het bestand om aan te geven dat het bestand is gemarkeerd voor verwijdering. U kunt bijvoorbeeld de eigenschap IsDeleted een naam geven, ingesteld op false. Wanneer u het bestand wilt verwijderen, wijzigt u het in waar.

  2. Bewerk in Azure AI Search de definitie van de gegevensbron om een eigenschap dataDeletionDetectionPolicy op te nemen. Het volgende beleid beschouwt bijvoorbeeld een bestand dat moet worden verwijderd als het een metagegevenseigenschap IsDeleted met de waarde trueheeft:

    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. Voer de indexeerfunctie uit. Nadat de indexeerfunctie het bestand heeft verwerkt en het document uit de zoekindex heeft verwijderd, kunt u vervolgens het fysieke bestand in Azure Storage verwijderen.

Niet-herstelde blobs en bestanden opnieuw indexeren

U kunt een voorlopig verwijderen ongedaan maken als het oorspronkelijke bronbestand nog steeds fysiek bestaat in Azure Storage.

  1. Wijzig de "softDeleteMarkerValue" : "false" blob of het bestand in Azure Storage.

  2. Controleer de tijdstempel van de blob of het bestand LastModified om deze nieuwer te maken dan de laatste uitvoering van de indexeerfunctie. U kunt een update afdwingen naar de huidige datum en tijd door de bestaande metagegevens op te geven.

  3. Voer de indexeerfunctie uit.

Volgende stappen