Mengisi Indeks Teks Lengkap
Berlaku untuk: SQL ServerAzure SQL Database Azure 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
BUAT INDEKS FULLTEXT ... DENGAN CHANGE_TRACKING OTOMATIS
ALTER FULLTEXT INDEX ... ATUR CHANGE_TRACKING OTOMATIS
Contoh - Mengubah indeks teks lengkap untuk menggunakan pelacakan perubahan otomatis
Contoh berikut mengubah indeksHumanResources.JobCandidate
teks lengkap tabelAdventureWorks
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
BUAT INDEKS FULLTEXT ... DENGAN MANUAL CHANGE_TRACKING
ALTER FULLTEXT INDEX ... ATUR MANUAL CHANGE_TRACKING
Contoh - Membuat indeks teks lengkap dengan pelacakan perubahan manual
Contoh berikut membuat indeks teks lengkap yang akan menggunakan pelacakan perubahan dengan populasi manual padaHumanResources.JobCandidate
tabelAdventureWorks
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 dariHumanResources.JobCandidate
tabelAdventureWorks
database sampel.USE AdventureWorks; GO ALTER FULLTEXT INDEX ON HumanResources.JobCandidate START UPDATE POPULATION; GO
Menonaktifkan pelacakan perubahan
BUAT INDEKS FULLTEXT ... DENGAN CHANGE_TRACKING NONAKTIF
ALTER FULLTEXT INDEX ... SET CHANGE_TRACKING NONAKTIF
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
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.
Penting
Jika tabel atau tampilan dasar tidak berisi kolom jenis data tanda waktu, populasi bertahap tidak dimungkinkan.
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.
Pilih OK.
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)