Mengisi Indeks Teks Lengkap

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Membuat dan memelihara indeks teks lengkap melibatkan pengisian indeks dengan menggunakan proses yang disebut populasi (juga dikenal sebagai perayapan).

Jenis populasi

Indeks teks lengkap mendukung jenis populasi berikut:

  • Populasi penuh
  • Populasi otomatis atau manual berdasarkan pelacakan perubahan
  • Populasi inkremental berdasarkan tanda waktu

Populasi penuh

Selama populasi penuh, entri indeks dibuat untuk semua baris tabel atau tampilan terindeks. Populasi lengkap indeks teks lengkap, membangun entri indeks untuk semua baris tabel dasar atau tampilan terindeks.

Secara default, SQL Server mengisi indeks teks lengkap baru sepenuhnya segera setelah dibuat.

  • Di satu sisi, populasi penuh dapat mengonsumsi sejumlah besar sumber daya. Oleh karena itu, saat membuat indeks teks lengkap selama periode puncak, sering kali merupakan praktik terbaik untuk menunda populasi penuh sampai waktu di luar puncak, terutama jika tabel dasar indeks teks penuh besar.
  • Di sisi lain, katalog teks lengkap tempat indeks berada tidak dapat digunakan sampai semua indeks teks lengkapnya diisi.

Untuk membuat indeks teks lengkap tanpa segera mengisinya, tentukan CHANGE_TRACKING OFF, NO POPULATION klausa dalam CREATE FULLTEXT INDEX pernyataan. Jika Anda menentukan CHANGE_TRACKING MANUAL, Mesin Teks Lengkap tidak mengisi indeks teks lengkap baru hingga Anda menjalankan ALTER FULLTEXT INDEX pernyataan menggunakan START FULL POPULATION klausa atau START INCREMENTAL POPULATION .

Contoh - Membuat indeks teks lengkap tanpa menjalankan populasi penuh

Contoh berikut membuat indeks teks lengkap pada Production.Document tabel AdventureWorks database sampel. Contoh ini digunakan WITH CHANGE_TRACKING OFF, NO POPULATION untuk menunda populasi penuh awal.

CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID);  
CREATE FULLTEXT CATALOG AW_Production_FTCat;  
CREATE FULLTEXT INDEX ON Production.Document  
(  
    Document                         --Full-text index column name   
        TYPE COLUMN FileExtension    --Name of column that contains file type information  
        Language 1033                 --1033 is LCID for the English language  
)  
    KEY INDEX ui_ukDoc  
    ON AW_Production_FTCat  
    WITH CHANGE_TRACKING OFF, NO POPULATION;  
GO  
  

Contoh - Menjalankan populasi penuh pada tabel

Contoh berikut menjalankan populasi penuh pada Production.Document tabel AdventureWorks database sampel.

ALTER FULLTEXT INDEX ON Production.Document  
   START FULL POPULATION;  

Populasi berdasarkan pelacakan perubahan

Secara opsional, Anda dapat menggunakan pelacakan perubahan untuk mempertahankan indeks teks lengkap setelah populasi penuh awalnya. Ada overhead kecil yang terkait dengan pelacakan perubahan karena SQL Server mempertahankan tabel di mana ia melacak perubahan pada tabel dasar sejak populasi terakhir. Saat Anda menggunakan pelacakan perubahan, SQL Server mempertahankan rekaman baris dalam tabel dasar atau tampilan terindeks yang telah dimodifikasi oleh pembaruan, penghapusan, atau sisipan. Perubahan data yang dilakukan melalui WRITETEXT dan UPDATETEXT tidak tercermin dalam indeks teks lengkap, dan tidak diambil dengan pelacakan perubahan.

Catatan

Untuk tabel yang berisi kolom tanda waktu, Anda dapat menggunakan populasi bertahap alih-alih pelacakan perubahan.

Saat Anda mengaktifkan pelacakan perubahan selama pembuatan indeks, SQL Server sepenuhnya mengisi indeks teks lengkap baru segera setelah dibuat. Setelah itu, perubahan dilacak dan disebarkan ke indeks teks lengkap.

Mengaktifkan pelacakan perubahan

Ada dua jenis pelacakan perubahan:

  • Otomatis (CHANGE_TRACKING AUTO opsi). Pelacakan perubahan otomatis adalah perilaku default.
  • Manual (CHANGE_TRACKING MANUAL opsi).

Jenis pelacakan perubahan menentukan bagaimana indeks teks lengkap diisi, sebagai berikut:

  • Populasi otomatis

    Secara default, atau jika Anda menentukan CHANGE_TRACKING AUTO, Mesin Teks-Penuh menggunakan populasi otomatis pada indeks teks lengkap. Setelah populasi penuh awal selesai, perubahan dilacak saat data dimodifikasi dalam tabel dasar, dan perubahan terlacak disebarkan secara otomatis. Indeks teks lengkap diperbarui di latar belakang, namun, sehingga perubahan yang disebarkan mungkin tidak segera tercermin dalam indeks.

    Untuk mulai melacak perubahan dengan populasi otomatis

    Contoh - Mengubah indeks teks lengkap untuk menggunakan pelacakan perubahan otomatis
    Contoh berikut mengubah indeks HumanResources.JobCandidate teks lengkap tabel AdventureWorks database sampel untuk menggunakan pelacakan perubahan dengan populasi otomatis.

    USE AdventureWorks;  
    GO  
    ALTER FULLTEXT INDEX ON HumanResources.JobCandidate SET CHANGE_TRACKING AUTO;  
    GO   
    
  • Populasi manual

    Jika Anda menentukan CHANGE_TRACKING MANUAL, Mesin Teks Lengkap menggunakan populasi manual pada indeks teks lengkap. Setelah populasi penuh awal selesai, perubahan dilacak saat data dimodifikasi dalam tabel dasar. Namun, mereka tidak disebarkan ke indeks teks lengkap sampai Anda menjalankan ALTER FULLTEXT INDEX ... Pernyataan START UPDATE POPULATION. Anda dapat menggunakan SQL Server Agent untuk memanggil pernyataan Transact-SQL ini secara berkala.

    Untuk mulai melacak perubahan dengan populasi manual

    Contoh - Membuat indeks teks lengkap dengan pelacakan perubahan manual
    Contoh berikut membuat indeks teks lengkap yang akan menggunakan pelacakan perubahan dengan populasi manual pada HumanResources.JobCandidate tabel AdventureWorks database sampel.

    USE AdventureWorks;  
    GO  
    CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);  
    CREATE FULLTEXT CATALOG ft AS DEFAULT;  
    CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume)   
       KEY INDEX ui_ukJobCand   
       WITH CHANGE_TRACKING=MANUAL;  
    GO  
    

    Contoh - Menjalankan populasi manual
    Contoh berikut menjalankan populasi manual pada indeks teks lengkap yang dilacak perubahan dari HumanResources.JobCandidate tabel AdventureWorks database sampel.

    USE AdventureWorks;  
    GO  
    ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION;  
    GO  
    

Menonaktifkan pelacakan perubahan

Populasi inkremental berdasarkan tanda waktu

Populasi inkremental adalah mekanisme alternatif untuk mengisi indeks teks lengkap secara manual. Jika tabel mengalami volume sisipan yang tinggi, menggunakan populasi inkremental bisa lebih efisien yang menggunakan populasi manual.

Anda dapat menjalankan populasi bertahap untuk indeks teks lengkap yang telah CHANGE_TRACKING diatur ke MANUAL atau NONAKTIF.

Persyaratan untuk populasi inkremental adalah bahwa tabel terindeks harus memiliki kolom jenis data tanda waktu. Jika kolom tanda waktu tidak ada, populasi inkremental tidak dapat dilakukan.

SQL Server menggunakan kolom tanda waktu untuk mengidentifikasi baris yang telah berubah sejak populasi terakhir. Populasi tambahan kemudian memperbarui indeks teks lengkap untuk baris yang ditambahkan, dihapus, atau dimodifikasi setelah populasi terakhir, atau saat populasi terakhir sedang berlangsung. Di akhir populasi, Mesin Teks-Penuh merekam nilai tanda waktu baru. Nilai ini adalah nilai tanda waktu terbesar yang telah ditemukan oleh Pengumpul SQL. Nilai ini akan digunakan ketika populasi inkremental berikutnya dimulai.

Dalam beberapa kasus, permintaan populasi inkremental menghasilkan populasi penuh.

  • Permintaan populasi inkremental pada tabel tanpa kolom tanda waktu menghasilkan operasi populasi penuh.
  • Jika populasi pertama pada indeks teks lengkap adalah populasi bertahap, populasi tersebut mengindeks semua baris, sehingga setara dengan populasi penuh.
  • Jika ada metadata yang memengaruhi indeks teks lengkap untuk tabel telah berubah sejak populasi terakhir, permintaan populasi bertambah bertahap diimplementasikan sebagai populasi penuh. Ini termasuk perubahan metadata yang disebabkan oleh mengubah definisi indeks kolom, indeks, atau teks lengkap apa pun.

Menjalankan populasi inkremental

Untuk menjalankan populasi inkremental, jalankan ALTER FULLTEXT INDEX pernyataan menggunakan START INCREMENTAL POPULATION klausa .

Membuat atau mengubah jadwal untuk populasi inkremental

  1. Di Management Studio, di Object Explorer, perluas server.

  2. Perluas Database, lalu perluas database yang berisi indeks teks lengkap.

  3. Perluas Tabel.

    Klik kanan tabel tempat indeks teks lengkap ditentukan, pilih indeks Teks-Penuh, dan pada menu konteks indeks Teks-Penuh, klik Properti. Ini membuka kotak dialog Properti indeks teks-penuh.

    Penting

    Jika tabel atau tampilan dasar tidak berisi kolom jenis data tanda waktu, populasi bertahap tidak dimungkinkan.

  4. Di panel Pilih halaman , pilih Jadwal.

    Gunakan halaman ini untuk membuat atau mengelola jadwal untuk pekerjaan SQL Server Agent yang memulai populasi tabel bertahap pada tabel dasar atau tampilan terindeks dari indeks teks lengkap.

    Opsinya meliputi:

    • Untuk membuat jadwal baru, klik Baru.

      Ini membuka kotak dialog Jadwal Tabel Pengindeksan Teks Lengkap Baru, tempat Anda bisa membuat jadwal. Untuk menyimpan jadwal, klik OK.

      Penting

      Pekerjaan SQL Server Agent (Mulai Populasi Tabel Inkremental di database_name.table_name) dikaitkan dengan jadwal baru setelah Anda keluar dari kotak dialog Properti Indeks Teks Lengkap. Jika Anda membuat beberapa jadwal untuk indeks teks lengkap yang sama, semuanya menggunakan pekerjaan yang sama.

    • Untuk mengubah jadwal yang ada, pilih jadwal yang ada dan klik Edit.

      Ini membuka kotak dialog Jadwal Tabel Pengindeksan Teks Lengkap Baru, tempat Anda dapat mengubah jadwal.

      Catatan

      Untuk informasi tentang memodifikasi pekerjaan SQL Server Agent, lihat Mengubah Pekerjaan.

    • Untuk menghapus jadwal yang sudah ada, pilih jadwal yang ada dan klik Hapus.

  5. PilihOK.

Memecahkan masalah kesalahan dalam populasi teks lengkap (perayapan)

Ketika kesalahan terjadi selama perayapan, fasilitas pengelogan perayapan Pencarian Teks Lengkap membuat dan memelihara log perayapan, yang merupakan file teks biasa. Setiap log perayapan sesuai dengan katalog teks lengkap tertentu. Secara default, log perayapan untuk instans tertentu (dalam contoh ini, instans default) terletak di %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG folder.

File log rayapan mengikuti skema penamaan berikut:

SQLFT<DatabaseID><FullTextCatalogID>.LOG[<n>]

Bagian variabel dari nama file log perayapan adalah sebagai berikut.

  • <DatabaseID> - ID database. <dbid> adalah angka lima digit dengan nol di depannya.
  • <FullTextCatalogID> - ID katalog teks lengkap. <catid> adalah angka lima digit dengan nol di depannya.
  • <n> - Adalah bilangan bulat yang menunjukkan satu atau beberapa log perayapan dari katalog teks lengkap yang sama ada.

Misalnya, SQLFT0000500008.2 adalah file log perayapan untuk database dengan ID database = 5, dan ID katalog teks lengkap = 8. 2 di akhir nama file menunjukkan bahwa ada dua file log perayapan untuk pasangan database/katalog ini.

Lihat Juga

sys.dm_fts_index_population (T-SQL)
Mulai dengan Pencarian Teks Lengkap
Membuat dan Mengelola Indeks Teks Lengkap
MEMBUAT INDEKS FULLTEXT (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)