Menghilangkan dan membangun kembali indeks di Azure AI Search

Artikel ini menjelaskan cara menghilangkan dan membangun kembali indeks Pencarian Azure AI. Ini menjelaskan keadaan di mana pembangunan ulang diperlukan, dan memberikan rekomendasi untuk mengurangi efek pembangunan kembali pada permintaan kueri yang sedang berlangsung. Jika Anda harus sering membangun kembali, sebaiknya gunakan alias indeks untuk mempermudah pertukaran indeks mana yang ditunjuk aplikasi Anda.

Selama pengembangan aktif, adalah umum untuk menghilangkan dan membangun kembali indeks saat Anda melakukan iterasi melalui desain indeks. Sebagian besar pengembang bekerja dengan sampel representatif kecil dari data mereka sehingga pengindeksaian ulang berjalan lebih cepat.

Modifikasi yang memerlukan pembangunan ulang

Tabel berikut mencantumkan modifikasi yang memerlukan penurunan dan pembangunan ulang indeks.

Tindakan Deskripsi
Menghapus bidang Untuk secara fisik menghapus semua jejak bidang, Anda harus membangun ulang indeks. Ketika pembangunan ulang langsung tidak praktis, Anda dapat memodifikasi kode aplikasi untuk mengalihkan akses dari bidang usang atau menggunakan searchFields dan memilih parameter kueri untuk memilih bidang mana yang dicari dan dikembalikan. Secara fisik, definisi bidang dan konten tetap berada dalam indeks hingga pembangunan kembali berikutnya, ketika Anda menerapkan skema yang menghilangkan bidang yang dimaksud.
Mengubah definisi bidang Revisi ke nama bidang, jenis data, atau atribut indeks tertentu (dapat dicari, dapat difilter, dapat diurutkan, dapat difaset) memerlukan pembangunan ulang penuh.
Menetapkan penganalisis ke suatu bidang Penganalisis didefinisikan dalam indeks, ditetapkan ke bidang, lalu dipanggil selama pengindeksan untuk mengindeks cara token dibuat. Anda dapat menambahkan definisi penganalisis baru ke indeks kapan saja, tetapi Anda hanya dapat menetapkan penganalisis saat bidang telah dibuat. Hal ini berlaku baik untuk properti penganalisis dan indexAnalyzer. Properti searchAnalyzer adalah pengecualian (Anda dapat menetapkan properti ini ke bidang yang ada).
Memperbarui atau menghapus definisi penganalisis dalam indeks Anda tidak dapat menghapus atau mengubah konfigurasi penganalisis yang ada (penganalisis, tokenizer, filter token, atau filter karakter) dalam indeks kecuali Anda membangun kembali seluruh indeks.
Menambahkan bidang ke pemberi saran Jika bidang sudah ada dan Anda ingin menambahkannya ke konstruksi Pemberi Saran, bangun ulang indeks.
Mengalihkan tingkatan Peningkatan di tempat tidak didukung. Jika Anda memerlukan lebih banyak kapasitas, buat layanan baru dan bangun ulang indeks Anda dari awal. Untuk membantu mengotomatiskan proses ini, Anda dapat menggunakan kode sampel index-backup-restore di repositori sampel Azure AI Search .NET ini. Aplikasi tersebut akan mencadangkan indeks Anda ke serangkaian file JSON, lalu membuat ulang indeks di layanan pencarian yang Anda tentukan.

Modifikasi tanpa persyaratan pembangunan ulang

Berbagai modifikasi lain dapat dilakukan tanpa berdampak pada struktur fisik yang ada. Secara khusus, perubahan berikut tidak memerlukan pembangunan ulang indeks. Untuk perubahan ini, Anda dapat memperbarui definisi indeks yang ada dengan perubahan Anda.

  • Menambahkan bidang baru
  • Menyetel atribut yang dapat diambil pada bidang yang ada
  • Memperbarui searchAnalyzer pada bidang yang memiliki indexAnalyzer yang sudah ada
  • Menambahkan definisi penganalisis baru dalam indeks (yang dapat diterapkan ke bidang baru)
  • Menambahkan, memperbarui, atau menghapus profil penilaian
  • Menambahkan, memperbarui, atau menghapus pengaturan CORS
  • Menambahkan, memperbarui, atau menghapus synonymMaps
  • Menambahkan, memperbarui, atau menghapus konfigurasi semantik

Saat Anda menambahkan bidang baru, dokumen terindeks yang sudah ada diberi nilai null untuk bidang yang baru. Pada refresh data di masa mendatang, nilai dari data sumber eksternal menggantikan null yang ditambahkan oleh Azure AI Search. Untuk informasi selengkapnya tentang memperbarui konten indeks, lihat Menambahkan, Memperbarui, atau Menghapus Dokumen.

Cara membangun ulang indeks

Selama pengembangan, skema indeks sering berubah. Anda dapat merencanakannya dengan membuat indeks yang dapat dihapus, dibuat ulang, dan dimuat ulang dengan cepat dengan himpunan kecil data perwakilan.

Untuk aplikasi yang sudah dalam produksi, kami menyarankan untuk membuat indeks baru yang berjalan berdampingan dengan indeks yang ada untuk menghindari downtime kueri. Kode aplikasi Anda menyediakan pengalihan ke indeks yang baru.

  1. Periksa ruang. layanan Pencarian tunduk pada jumlah maksimum indeks, bervariasi menurut tingkat layanan. Pastikan Anda memiliki ruang untuk indeks kedua.

  2. Menentukan apakah pembangunan ulang diperlukan. Jika Anda hanya menambahkan bidang, atau mengubah beberapa bagian indeks yang tidak terkait dengan bidang, Anda mungkin dapat memperbarui definisi tanpa menghapus, membuat ulang, dan memuat ulang sepenuhnya.

  3. Dapatkan definisi indeks jika Anda membutuhkannya untuk referensi di masa mendatang.

  4. Hilangkan indeks yang ada, dengan asumsi Anda tidak menjalankan indeks baru dan lama secara berdampingan.

    Setiap kueri yang menargetkan indeks tersebut segera dihilangkan. Ingatlah bahwa indeks yang dihapus tidak dapat dikembalikan, ini menghancurkan penyimpanan fisik untuk kumpulan bidang dan konstruk lainnya. Berhentilah sejenak untuk memikirkan implikasinya sebelum menghilangkan indeks tersebut.

  5. Buat indeks yang direvisi, dimana isi permintaan menyertakan definisi bidang yang diubah atau dimodifikasi.

  6. Muat indeks dengan dokumen dari sumber eksternal.

Saat Anda membuat indeks, penyimpanan fisik dialokasikan untuk setiap bidang dalam skema indeks tersebut, disertai dengan indeks terbalik yang dibuat untuk setiap bidang yang dapat dicari. Bidang yang tidak dapat dicari dapat digunakan dalam filter atau ekspresi, tetapi tidak memiliki indeks terbalik dan tidak dapat dicari teks lengkap atau fuzzy. Pada pembangunan ulang indeks, indeks terbalik ini dihapus dan dibuat ulang berdasarkan skema indeks yang Anda berikan.

Saat Anda memuat indeks, indeks terbalik pada setiap bidang diisi dengan semua kata yang unik dan diberi token dari setiap dokumen, dengan peta ke ID dokumen terkait. Misalnya, saat mengindeks himpunan data hotel, indeks terbalik yang dibuat untuk bidang Kota mungkin berisi istilah untuk Seattle, Portland, dan sebagainya. Dokumen yang mencakup Seattle atau Portland dalam bidang Kota akan memiliki ID dokumen mereka tercantum bersama istilah tersebut. Pada setiap operasi Tambahkan, Perbarui atau Hapus, daftar istilah dan ID dokumen turut diperbarui.

Menyeimbangkan beban kerja

Pengindeksan tidak berjalan di latar belakang, tetapi layanan pencarian akan menyeimbangkan pekerjaan pengindeksan apa pun terhadap kueri yang sedang berlangsung. Selama pengindeksan, Anda dapat memantau permintaan kueri di portal untuk memastikan kueri selesai tepat waktu.

Jika beban kerja pengindeksan memperkenalkan tingkat latensi kueri yang tidak dapat diterima, lakukan analisis performa dan tinjau tips performa ini untuk potensi mitigasi.

Memeriksa pembaruan

Anda dapat segera mulai mengkueri indeks setelah dokumen pertama dimuat. Jika Anda mengetahui ID dokumen, API REST Lookup Document mengembalikan dokumen tersebut. Untuk pengujian yang lebih luas, Anda harus menunggu sampai indeks dimuat sepenuhnya, lalu gunakan kueri untuk memverifikasi konteks yang ingin Anda lihat.

Anda dapat menggunakan Penjelajah Pencarian atau klien REST untuk memeriksa konten yang diperbarui.

Jika Anda menambahkan atau mengganti nama suatu bidang, gunakan $select untuk mengembalikan bidang tersebut: search=*&$select=document-id,my-new-field,some-old-field&$count=true

Lihat juga