Bagikan melalui


Mengisi Indeks Teks Lengkap

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

Jenis Populasi

SQL Server mendukung jenis populasi berikut: populasi penuh, populasi otomatis atau manual berbasis pelacakan perubahan, dan populasi berbasis tanda waktu bertahap.

Populasi Penuh

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

Secara default, SQL Server mengisi indeks teks lengkap baru sepenuhnya segera setelah dibuat. Namun, 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 hingga waktu di luar puncak, terutama jika tabel dasar indeks teks lengkap besar. Namun, katalog teks lengkap tempat indeks berada tidak dapat digunakan sampai semua indeks teks lengkapnya diisi. Untuk membuat indeks teks lengkap tanpa segera mengisinya, tentukan klausa CHANGE_TRACKING OFF, NO POPULATION dalam pernyataan CREATE FULLTEXT INDEX. Jika Anda menentukan CHANGE_TRACKING MANUAL, Full-Text Engine menggunakan pernyataan . SQL Server tidak akan mengisi indeks teks lengkap baru hingga Anda menjalankan pernyataan ALTER FULLTEXT INDEX menggunakan klausa START FULL POPULATION atau START INCREMENTAL POPULATION. Untuk informasi selengkapnya, lihat contoh "A. Membuat indeks teks lengkap tanpa menjalankan populasi penuh" dan "B. Menjalankan populasi penuh di atas meja," nanti dalam topik ini.

Ubah Populasi Tracking-Based

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 pelacakan perubahan digunakan, SQL Server mempertahankan rekaman baris dalam tabel dasar atau tampilan terindeks yang telah dimodifikasi oleh pembaruan, penghapusan, atau penyisipan. Perubahan data melalui WRITETEXT dan UPDATETEXT tidak tercermin dalam indeks teks lengkap, dan tidak diambil dengan pelacakan perubahan.

Catatan

Untuk tabel yang timestamp berisi kolom, Anda bisa menggunakan populasi inkremental.

Saat pelacakan perubahan diaktifkan selama pembuatan indeks, SQL Server sepenuhnya mengisi indeks teks lengkap baru segera setelah dibuat. Setelah itu, perubahan dilacak dan disebarkan ke indeks teks lengkap. Ada dua jenis pelacakan perubahan, otomatis (opsi CHANGE_TRACKING AUTO) dan manual (CHANGE_TRACKING opsi MANUAL). Pelacakan perubahan otomatis adalah perilaku default.

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

  • Populasi otomatis

    Secara default, atau jika Anda menentukan CHANGE_TRACKING AUTO, mesin Full-Text 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 menyiapkan perubahan pelacakan dengan populasi otomatis

    Untuk informasi selengkapnya, lihat contoh "E. Mengubah indeks teks lengkap untuk menggunakan pelacakan perubahan otomatis," nanti dalam topik ini.

  • Populasi manual

    Jika Anda menentukan CHANGE_TRACKING MANUAL, mesin Full-Text menggunakan populasi manual pada indeks teks lengkap. Setelah populasi penuh awal selesai, perubahan dilacak saat data dimodifikasi dalam tabel dasar. Namun, mereka tidak disebarluaskan 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

    Untuk informasi selengkapnya, lihat contoh "C. Membuat indeks teks lengkap dengan pelacakan perubahan manual" dan "D. Menjalankan populasi manual," nanti dalam topik ini.

Untuk menonaktifkan pelacakan perubahan

Populasi Timestamp-Based Inkremental

Populasi inkremental adalah mekanisme alternatif untuk mengisi indeks teks lengkap secara manual. Anda dapat menjalankan populasi bertahap untuk indeks teks lengkap yang telah CHANGE_TRACKING diatur ke MANUAL atau NONAKTIF. Jika populasi pertama pada indeks teks lengkap adalah populasi bertahap, populasi tersebut mengindeks semua baris, sehingga setara dengan populasi penuh.

Persyaratan untuk populasi inkremental adalah bahwa tabel terindeks harus memiliki kolom jenis timestamp data. timestamp Jika kolom tidak ada, populasi inkremental tidak dapat dilakukan. Permintaan populasi inkremental pada tabel tanpa timestamp kolom menghasilkan operasi populasi penuh. Selain itu, 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.

SQL Server menggunakan timestamp kolom untuk mengidentifikasi baris yang telah berubah sejak populasi terakhir. Populasi inkremental kemudian memperbarui indeks teks lengkap untuk baris yang ditambahkan, dihapus, atau dimodifikasi setelah populasi terakhir, atau saat populasi terakhir sedang berlangsung. Jika tabel mengalami volume sisipan yang tinggi, menggunakan populasi inkremental bisa lebih efisien yang menggunakan populasi manual.

Pada akhir populasi, mesin Full-Text merekam nilai baru timestamp . Nilai ini adalah nilai terbesar timestamp yang ditemui SQL Gatherer. Nilai ini akan digunakan ketika populasi inkremental berikutnya dimulai.

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

Contoh Mengisi Indeks Full-Text

Catatan

Contoh di bagian ini menggunakan Production.Document tabel AdventureWorks atau HumanResources.JobCandidate database sampel.

J. Membuat indeks teks lengkap tanpa menjalankan populasi penuh

Contoh berikut membuat indeks teks lengkap pada Production.Document tabel AdventureWorks database sampel. Contoh ini menggunakan 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  
  

B. Menjalankan populasi penuh di atas tabel

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

ALTER FULLTEXT INDEX ON Production.Document  
   START FULL POPULATION;  

C. 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  

D. 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  

E. 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   

Membuat atau Mengubah Jadwal untuk Populasi Inkremental

Untuk membuat atau mengubah jadwal populasi inkremental di Management Studio

  1. 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 .

  1. Di panel Pilih halaman , pilih Jadwal.

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

    Penting

    Jika tabel atau tampilan dasar tidak berisi kolom jenis timestamp data, populasi penuh dilakukan.

    Opsinya meliputi:

    • Untuk membuat jadwal baru, klik Baru.

      Ini membuka kotak dialog Jadwal Tabel Pengindeksan Full-Text 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 Penuh. Jika Anda membuat beberapa jadwal untuk indeks teks lengkap, semuanya menggunakan pekerjaan yang sama.

    • Untuk mengubah jadwal, pilih jadwal dan klik Edit.

      Ini membuka kotak dialog Jadwal Tabel Pengindeksan Full-Text Baru , tempat Anda dapat mengubah jadwal.

      Catatan

      Untuk informasi tentang memodifikasi pekerjaan, lihat Mengubah Pekerjaan.

    • Untuk menghapus jadwal, pilih jadwal dan klik Hapus.

  2. Klik OK.

Pemecahan Masalah Kesalahan dalam Populasi Full-Text (Perayapan)

Ketika kesalahan terjadi selama perayapan, fasilitas pengelogan rayapan pencarian Full-Text 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 hal ini, instans pertama, terletak di %ProgramFiles%\Microsoft SQL Server\MSSQL12. Folder MSSQLSERVER\MSSQL\LOG. File log perayapan mengikuti skema penamaan berikut:

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

<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.

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
CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)