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
BUAT INDEKS FULLTEXT ... DENGAN CHANGE_TRACKING OTOMATIS
ALTER FULLTEXT INDEX ... SET CHANGE_TRACKING AUTO
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
BUAT INDEKS FULLTEXT ... DENGAN MANUAL CHANGE_TRACKING
ALTER FULLTEXT INDEX ... ATUR MANUAL CHANGE_TRACKING
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
BUAT INDEKS FULLTEXT ... DENGAN CHANGE_TRACKING NONAKTIF
ALTER FULLTEXT INDEX ... SET CHANGE_TRACKING NONAKTIF
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
Di Object Explorer, perluas server.
Perluas Database, lalu perluas database yang berisi indeks teks lengkap.
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 .
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.
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)