Mengubah dan menghapus deteksi menggunakan pengindeks untuk Azure Storage di Azure AI Search

Setelah indeks pencarian awal dibuat, Anda mungkin ingin pekerjaan pengindeks berikutnya hanya mengambil dokumen baru dan yang diubah. Untuk konten terindeks yang berasal dari Azure Storage, deteksi perubahan terjadi secara otomatis karena pengindeks melacak pembaruan terakhir menggunakan tanda waktu bawaan pada objek dan file di Azure Storage.

Meskipun deteksi perubahan diberikan, deteksi penghapusan tidak. Pengindeks tidak melacak penghapusan objek di sumber data. Untuk menghindari memiliki dokumen pencarian yatim piatu, Anda dapat menerapkan strategi "penghapusan sementara" yang menghasilkan penghapusan dokumen pencarian terlebih dahulu, dengan penghapusan fisik di Azure Storage mengikuti sebagai langkah kedua.

Ada dua cara untuk menerapkan strategi penghapusan sementara:

Prasyarat

  • Menggunakan pengindeks Azure Storage untuk Blob Storage, Table Storage, File Storage, atau Data Lake Storage Gen2

  • Gunakan kunci dokumen dan struktur file yang konsisten. Mengubah kunci dokumen atau nama dan jalur direktori (berlaku untuk ADLS Gen2) merusak informasi pelacakan internal yang digunakan oleh pengindeks untuk mengetahui konten mana yang diindeks, dan kapan terakhir kali diindeks.

Catatan

ADLS Gen2 memungkinkan direktori diganti namanya. Ketika direktori diganti namanya, tanda waktu untuk blob di direktori tersebut tidak diperbarui. Akibatnya, pengindeks tidak akan mengindeks ulang blob tersebut. Jika Anda memerlukan blob dalam direktori untuk diindeks ulang setelah nama direktori diganti karena mereka sekarang memiliki URL baru, Anda harus memperbarui LastModified tanda waktu untuk semua blob di direktori sehingga pengindeks tahu untuk mengindeksnya kembali selama eksekusi di masa mendatang. Direktori virtual di Azure Blob Storage tidak dapat diubah, sehingga tidak memiliki masalah ini.

Penghapusan sementara native blob

Untuk pendekatan deteksi penghapusan ini, Azure AI Search bergantung pada fitur penghapusan sementara blob asli di Azure Blob Storage untuk menentukan apakah blob telah beralih ke status dihapus sementara. Ketika blob terdeteksi dalam keadaan ini, pengindeks pencarian menggunakan informasi ini untuk menghapus dokumen yang berhubungan dari indeks.

Persyaratan untuk penghapusan sementara asli

  • Blob harus berada dalam kontainer Azure Blob Storage. Kebijakan penghapusan sementara blob asli Azure AI Search tidak didukung untuk blob di ADLS Gen2 atau Azure Files.

  • Mengaktifkan penghapusan sementara untuk blob.

  • Kunci dokumen untuk dokumen dalam indeks Anda harus dipetakan menjadi properti blob atau metadata blob, seperti "metadata_storage_path".

  • Anda harus menggunakan REST API (api-version=2023-11-01) atau versi yang lebih baru, atau konfigurasi Sumber Data pengindeks di portal Azure, untuk mengonfigurasi dukungan untuk penghapusan sementara.

  • Penerapan versi blob tidak boleh diaktifkan di akun penyimpanan. Jika tidak, penghapusan sementara asli tidak didukung oleh desain.

Mengonfigurasi penghapusan sementara asli

Di penyimpanan Blob, saat mengaktifkan penghapusan sementara sesuai persyaratan, atur kebijakan penyimpanan ke nilai yang jauh lebih tinggi daripada jadwal interval pengindeks Anda. Jika ada masalah saat menjalankan pengindeks, atau jika Anda memiliki sejumlah besar dokumen untuk diindeks, ada banyak waktu bagi pengindeks untuk akhirnya memproses blob yang dihapus sementara. Pengindeks Azure AI Search hanya akan menghapus dokumen dari indeks jika memproses blob saat berada dalam status dihapus sementara.

Di Azure AI Search, atur kebijakan deteksi penghapusan sementara blob asli pada sumber data. Anda dapat melakukan ini baik dari portal Azure, dengan menggunakan REST API (api-version=2023-11-01). Instruksi berikut menjelaskan cara mengatur kebijakan deteksi penghapusan di portal Azure atau melalui REST API.

  1. Masuk ke portal Azure.

  2. Pada halaman Gambaran Umum layanan Pencarian Azure AI, buka Sumber Data Baru, editor visual untuk menentukan definisi sumber data.

    Cuplikan layar berikut menunjukkan tempat Anda dapat menemukan fitur ini di portal.

    Screenshot of data source configuration in Import Data wizard.

  3. Pada formulir Sumber Data Baru, isi bidang yang diperlukan, pilih kotak centang Lacak penghapusan dan pilih Penghapusan sementara blob asli. Lalu tekan Simpan untuk mengaktifkan fitur pada pembuatan Sumber Data.

    Screenshot of portal data source native soft delete.

Mengindeks ulang blob yang tidak dihapus menggunakan kebijakan penghapusan sementara asli

Jika Anda memulihkan blob yang dihapus sementara di penyimpanan Blob, pengindeks tidak akan selalu mengindeksnya kembali. Ini karena pengindeks menggunakan uLastModified tanda waktu blob untuk menentukan apakah pengindeksan diperlukan. Ketika blob yang dihapus sementara tidak dihapus, tanda waktunya LastModified tidak diperbarui, jadi jika pengindeks telah memproses blob dengan tanda waktu yang lebih baru LastModified , itu tidak akan mengindeks ulang blob yang tidak dihapus.

Untuk memastikan bahwa blob yang tidak dihapus diindeks ulang, Anda harus memperbarui tanda waktu blob LastModified . Salah satu cara untuk melakukan ini adalah dengan menyimpan kembali metadata blob tersebut. Anda tidak perlu mengubah metadata, tetapi menyimpan kembali metadata akan memperbarui LastModified tanda waktu blob sehingga pengindeks tahu untuk mengambilnya.

Strategi penghapusan sementara menggunakan metadata kustom

Metode ini menggunakan metadata kustom untuk menunjukkan apakah dokumen pencarian harus dihapus dari indeks. Ini memerlukan dua tindakan terpisah: menghapus dokumen pencarian dari indeks, diikuti dengan penghapusan file di Azure Storage.

Ada langkah-langkah yang harus diikuti di Azure Storage dan Azure AI Search, tetapi tidak ada dependensi fitur lainnya.

  1. Di Azure Storage, tambahkan pasangan kunci-nilai metadata kustom ke file untuk menunjukkan file ditandai untuk dihapus. Misalnya, Anda dapat memberi nama properti "IsDeleted", diatur ke false. Ketika Anda ingin menghapus file, ubah ke true.

  2. Di Azure AI Search, edit definisi sumber data untuk menyertakan properti "dataDeletionDetectionPolicy". Misalnya, kebijakan berikut mempertimbangkan file untuk dihapus jika memiliki properti metadata IsDeleted dengan nilai 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. Jalankan pengindeks. Setelah pengindeks memproses file dan menghapus dokumen dari indeks pencarian, Anda kemudian dapat menghapus file fisik di Azure Storage.

Mengindeks ulang blob dan file yang tidak dihapus

Anda dapat membalikkan penghapusan sementara jika file sumber asli masih ada secara fisik di Azure Storage.

  1. "softDeleteMarkerValue" : "false" Ubah pada blob atau file di Azure Storage.

  2. Periksa tanda waktu blob atau file LastModified untuk membuatnya lebih baru dari pengindeks terakhir yang dijalankan. Anda dapat memaksa pembaruan ke tanggal dan waktu saat ini dengan menyimpan kembali metadata yang ada.

  3. Jalankan pengindeks.

Langkah berikutnya