Pengindeksan data dari Azure Database for MySQL Flexible Server (pratinjau)

Catatan

Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.

Penting

Fitur, kemampuan, atau properti yang ditandai (pratinjau) tidak tercakup dalam perjanjian tingkat layanan, tidak disarankan untuk beban kerja produksi, dan mungkin berubah atau dibatasi sebelum tersedia secara umum. Ketentuan pratinjau Pencarian Azure AI berlaku untuk semua fungsionalitas pratinjau, baik itu mandiri atau bagian dari fitur yang tersedia secara umum.

Penting

Fitur dan fungsionalitas ini mendukung koneksi ke layanan layanan Microsoft dan pihak ketiga lainnya. Penggunaan layanan ini tunduk pada persyaratan masing-masing dan dapat mengakibatkan pemrosesan data atau penyimpanan di luar batas kepatuhan Azure, serta data yang mengalir ke batas kepatuhan Azure.

Anda bertanggung jawab untuk mengelola apakah data Anda akan mengalir di luar batas kepatuhan dan geografis organisasi Anda dan implikasi terkait, dan bahwa izin, batas, dan persetujuan yang sesuai disediakan.

Anda bertanggung jawab untuk meninjau dan menguji aplikasi yang Anda buat dengan cermat dalam konteks kasus penggunaan spesifik Anda dan membuat semua keputusan dan penyesuaian yang sesuai. Ini termasuk menerapkan mitigasi AI Anda sendiri yang bertanggung jawab, seperti metaprompts, filter konten, atau sistem keamanan lainnya, dan memastikan aplikasi Anda memenuhi standar kualitas, keandalan, keamanan, dan kepercayaan yang sesuai. Untuk informasi selengkapnya, lihat Catatan Transparansi Pencarian Azure AI.

pengindeks Azure Database for MySQL (pratinjau) mengimpor konten dari Azure Database for MySQL Flexible Server ke dalam indeks Pencarian Azure AI. Input ke pengindeks adalah baris dari satu tabel atau tampilan. Output adalah indeks pencarian dengan konten yang dapat dicari di bidang individual.

Artikel ini melengkapi Buat indeks dengan informasi khusus untuk pengindeksan dari Azure Database for MySQL Flexible Server. Ini menggunakan REST API untuk menunjukkan alur kerja tiga bagian yang umum untuk semua pengindeks: membuat sumber data, membuat indeks, membuat pengindeks. Ekstraksi data terjadi saat Anda mengirimkan permintaan Buat Pengindeks.

Saat dikonfigurasi untuk menyertakan high-water mark dan penghapusan sementara, pengindeks memproses semua perubahan, mengunggah, dan menghapus untuk database MySQL Anda. Ini mencerminkan perubahan ini dalam indeks pencarian Anda. Ekstraksi data terjadi saat Anda mengirimkan permintaan Buat Pengindeks.

Prasyarat

  • Lengkapi formulir pendaftaran pratinjau pengindeks. Pendaftaran disetujui secara otomatis.

  • Azure Database untuk Server Fleksibel MySQL dan data sampel. Data harus berada dalam tabel atau tampilan. Kunci primer diperlukan. Jika Anda menggunakan tampilan, tampilan tersebut harus memiliki kolom penanda batas atas.

  • Izin untuk membaca Connection string full access menyertakan kunci yang memberikan akses ke konten, tetapi jika Anda menggunakan peran Azure, pastikan identitas yang dikelola untuk layanan search mendapatkan izin Reader di MySQL.

  • Klien REST untuk membuat sumber data, indeks, dan pengindeks.

    Anda juga dapat menggunakan Azure SDK untuk .NET. Anda tidak dapat menggunakan portal Azure untuk pembuatan pengindeks, tetapi Anda dapat mengelola pengindeks dan sumber data setelah dibuat.

Pratinjau batasan

Saat ini, pelacakan perubahan dan deteksi penghapusan tidak berfungsi jika tanggal atau tanda waktu seragam untuk semua baris. Batasan ini adalah masalah yang diketahui untuk ditangani dalam pembaruan pratinjau. Hingga masalah ini diatasi, jangan tambahkan set keterampilan ke pengindeks MySQL.

Pratinjau tidak mendukung jenis geometri dan blob.

Seperti yang disebutkan, tidak ada dukungan portal untuk pembuatan pengindeks, tetapi pengindeks mySQL dan sumber data dapat dikelola di portal Azure setelah ada. Misalnya, Anda dapat mengedit definisi, dan mengatur ulang, menjalankan, atau menjadwalkan pengindeks.

Menentukan sumber data

Definisi sumber data menentukan data untuk mengindeks, kredensial, dan kebijakan untuk mengidentifikasi perubahan dalam data. Sumber data didefinisikan sebagai sumber daya independen sehingga dapat digunakan oleh beberapa pengindeks.

Buat atau Perbarui Sumber Data menentukan definisi. Pastikan untuk menggunakan versi pratinjau REST API saat membuat sumber data.

{   
    "name" : "hotel-mysql-ds",
    "description" : "[Description of MySQL data source]",
    "type" : "mysql",
    "credentials" : { 
        "connectionString" : 
            "Server=[MySQLServerName].MySQL.database.azure.com; Port=3306; Database=[DatabaseName]; Uid=[UserName]; Pwd=[Password]; SslMode=Preferred;" 
    },
    "container" : { 
        "name" : "[TableName]" 
    },
    "dataChangeDetectionPolicy" : { 
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "[HighWaterMarkColumn]"
    }
}

Poin-poin penting:

  • Atur type ke "mysql" (diperlukan).

  • Atur credentials menjadi string koneksi ADO.NET. Anda dapat menemukan string koneksi di portal Azure, pada halaman Koneksi untuk MySQL.

  • Atur container ke nama tabel.

  • Atur dataChangeDetectionPolicy jika data volatil, dan Anda ingin pengindeks hanya memproses item baru dan yang diperbarui pada pemrosesan selanjutnya.

  • Atur dataDeletionDetectionPolicy jika Anda ingin menghapus dokumen pencarian dari indeks pencarian saat item sumber dihapus.

Catatan

Untuk properti nama kontainer, nilai dibatasi hanya untuk mengizinkan huruf, angka, garis bawah (_), titik (.), tanda hubung tunggal (-), dan kurung siku ([])

Membuat indeks

Buat atau Perbarui Indeks menentukan skema indeks:

{
    "name" : "hotels-mysql-ix",
    "fields": [
        { "name": "ID", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false },
        { "name": "Category", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true  },
        { "name": "City", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true },
        { "name": "Description", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false  }     
    ]
}

Jika kunci utama dalam tabel sumber cocok dengan kunci dokumen (dalam hal ini, "ID"), pengindeks mengimpor kunci utama sebagai kunci dokumen.

Jenis data pemetaan

Tabel berikut memetakan database MySQL ke yang setara dengan Pencarian Azure AI. Untuk informasi selengkapnya, lihat Jenis data yang didukung (Pencarian Azure AI).

Catatan

Pratinjau tidak mendukung jenis geometri dan blob.

Jenis data MySQL tipe bidang Pencarian Azure AI
bool, boolean Edm.Boolean, Edm.String
tinyint, smallint, mediumint, int, integer, year Edm.Int32, Edm.Int64, Edm.String
bigint Edm.Int64, Edm.String
float, double, real Edm.Double, Edm.String
date, datetime, timestamp Edm.DateTimeOffset, Edm.String
char, tinytext, varchar, mediumtext, text, longtext, enum, set, time Edm.String
data numerik yang tidak ditandatangani, serial, desimal, desimal, bit, blob, biner, geometri N/A

Mengonfigurasi dan menjalankan pengindeks MySQL

Setelah indeks dan sumber data dibuat, Anda siap untuk membuat pengindeks. Konfigurasi pengindeks menentukan input, parameter, dan properti yang mengontrol perilaku run time.

Buat atau perbarui pengindeks dengan memberinya nama dan mereferensikan sumber data dan indeks target:

{
    "name" : "hotels-mysql-idxr",
    "dataSourceName" : "hotels-mysql-ds",
    "targetIndexName" : "hotels-mysql-ix",
    "disabled": null,
    "schedule": null,
    "parameters": {
        "batchSize": null,
        "maxFailedItems": null,
        "maxFailedItemsPerBatch": null,
        "base64EncodeKeys": null,
        "configuration": { }
        },
    "fieldMappings" : [ ],
    "encryptionKey": null
}

Poin-poin penting:

Periksa status pengindeks

Kirim permintaan Dapatkan Status Pengindeks untuk memantau eksekusi pengindeks:

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2026-08-01-preview
  Content-Type: application/json  
  api-key: [admin key]

Respons mencakup status dan jumlah item yang diproses. Ini akan terlihat mirip dengan contoh berikut:

{
    "status":"running",
    "lastResult": {
        "status":"success",
        "errorMessage":null,
        "startTime":"2024-02-21T00:23:24.957Z",
        "endTime":"2024-02-21T00:36:47.752Z",
        "errors":[],
        "itemsProcessed":1599501,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
    },
    "executionHistory":
    [
        {
            "status":"success",
            "errorMessage":null,
            "startTime":"2024-02-21T00:23:24.957Z",
            "endTime":"2024-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        ... earlier history items
    ]
}

Riwayat eksekusi berisi hingga 50 eksekusi yang terakhir selesai, yang diurutkan dalam urutan kronologis terbalik sehingga eksekusi terbaru menjadi yang pertama.

Mengindeks baris baru dan yang diubah

Setelah pengindeks mengisi indeks pencarian sepenuhnya, Anda mungkin ingin proses pengindeksan selanjutnya dijalankan untuk mengindeks secara bertahap dan otomatis hanya baris baru dan yang diubah dalam database Anda.

Untuk mengaktifkan pengindeksan bertahap, atur dataChangeDetectionPolicy properti dalam definisi sumber data Anda. Properti ini memberi tahu pengindeks mekanisme pelacakan perubahan mana yang digunakan pada data Anda.

Untuk pengindeks Azure Database for MySQL, satu-satunya kebijakan yang didukung adalah HighWaterMarkChangeDetectionPolicy.

Kebijakan deteksi perubahan pengindeks bergantung pada keberadaan kolom penanda batas tinggi yang merekam versi baris, atau tanggal dan waktu saat baris terakhir diperbarui. Sering kali DATE, DATETIME, atau TIMESTAMP berada pada tingkat granularitas yang cukup untuk memenuhi persyaratan kolom penanda batas tinggi.

Di database MySQL Anda, kolom batas maksimum data harus memenuhi persyaratan berikut:

  • Semua sisipan data harus menentukan nilai untuk kolom tersebut.
  • Semua pembaruan pada item juga mengubah nilai kolom.
  • Nilai kolom ini meningkat dengan setiap sisipan atau pembaruan.
  • Kueri dengan klausa WHERE dan ORDER BY berikut dapat dijalankan secara efisien:WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]

Contoh berikut menunjukkan definisi sumber data dengan kebijakan deteksi perubahan:

{
    "name" : "[Data source name]",
    "type" : "mysql",
    "credentials" : { "connectionString" : "[connection string]" },
    "container" : { "name" : "[table or view name]" },
    "dataChangeDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName" : "[last_updated column name]"
    }
}

Penting

Jika Anda menggunakan tampilan, Anda harus menetapkan kebijakan penanda batas di sumber data pengindeks Anda.

Jika tabel sumber tidak memiliki indeks pada kolom tanda air tinggi, kueri yang digunakan oleh pengindeks MySQL mungkin kehabisan waktu. Secara khusus, ORDER BY [High Water Mark Column] klausa mengharuskan indeks berjalan secara efisien ketika tabel berisi banyak baris.

Mengindeks baris yang dihapus

Saat baris dihapus dari tabel atau tampilan, Anda biasanya ingin menghapus baris tersebut dari indeks pencarian juga. Namun, jika baris dihapus secara fisik dari tabel, pengindeks tidak memiliki cara untuk menyimpulkan adanya rekaman yang tidak ada lagi. Solusinya adalah menggunakan teknik penghapusan sementara untuk menghapus baris secara logis tanpa menghapusnya dari tabel. Tambahkan kolom ke tabel Anda atau tampilkan dan tandai baris sebagai dihapus menggunakan kolom tersebut.

Mengingat kolom yang menyediakan status penghapusan, pengindeks dapat dikonfigurasi untuk menghapus dokumen pencarian yang status penghapusannya diatur ke true. Properti konfigurasi yang mendukung perilaku ini adalah kebijakan deteksi penghapusan data, yang ditentukan dalam definisi sumber data sebagai berikut:

{
    …,
    "dataDeletionDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
        "softDeleteColumnName" : "[a column name]",
        "softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
    }
}

softDeleteMarkerValue harus berupa string. Misalnya, jika Anda memiliki kolom bilangan bulat di mana baris yang dihapus ditandai dengan nilai 1, gunakan "1". Jika Anda memiliki kolom BIT di mana baris yang dihapus ditandai dengan nilai Boolean 'true', gunakan string literal True atau true (penggunaan huruf kapital atau huruf kecil tidak masalah).

Langkah berikutnya

Anda sekarang dapat menjalankan pengindeks, status pemantauan, atau menjadwalkan eksekusi pengindeks. Artikel berikut berlaku untuk pengindeks yang menarik konten dari Azure MySQL: