Membuat dan mengelola indeks teks lengkap

Berlaku untuk: SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Artikel ini menjelaskan cara membuat, mengisi, dan mengelola indeks teks lengkap di Mesin Database SQL Server. Indeks teks lengkap mendukung pencarian kata kunci dan linguistik melalui kolom berbasis karakter dalam tabel.

Membuat katalog teks lengkap

Sebelum dapat membuat indeks teks lengkap, Anda memerlukan katalog teks lengkap. Katalog adalah kontainer virtual untuk satu atau beberapa indeks teks lengkap. Untuk informasi selengkapnya, lihat Membuat dan mengelola katalog Full-Text.

Membuat, mengubah, atau menghilangkan indeks teks lengkap

Mengisi indeks teks lengkap

Proses pembuatan dan pemeliharaan indeks teks lengkap disebut populasi (juga dikenal sebagai perayapan). Ada tiga jenis populasi indeks teks lengkap:

  • Jumlah populasi keseluruhan
  • Populasi berdasarkan pelacakan perubahan
  • Populasi bertambah secara bertahap berdasarkan cap waktu

Untuk informasi selengkapnya, lihat Mengisi Indeks Teks Penuh.

Menampilkan properti indeks teks lengkap

Menampilkan properti indeks teks lengkap dengan Transact-SQL

Tampilan Katalog atau Manajemen Dinamis Deskripsi
sys.fulltext_index_catalog_usages Mengembalikan baris untuk setiap katalog teks lengkap ke referensi indeks teks lengkap.
sys.fulltext_index_columns Berisi baris untuk setiap kolom yang merupakan bagian dari indeks teks lengkap.
sys.fulltext_index_fragments Indeks teks lengkap menggunakan tabel internal yang disebut fragmen indeks teks lengkap untuk menyimpan data indeks terbalik. Anda dapat menggunakan tampilan ini untuk mengkueri metadata tentang fragmen ini. Tampilan ini berisi baris untuk setiap fragmen indeks teks lengkap di setiap tabel yang berisi indeks teks lengkap.
sys.fulltext_indexes Berisi satu baris per entri indeks teks lengkap dari sebuah objek tabular.
sys.dm_fts_index_keywords Mengembalikan informasi tentang konten indeks teks lengkap untuk tabel yang ditentukan.
sys.dm_fts_index_keywords_by_document Mengembalikan informasi tentang konten tingkat dokumen indeks teks lengkap untuk tabel yang ditentukan. Kata kunci tertentu dapat muncul di beberapa dokumen.
sys.dm_fts_index_population Mengembalikan informasi mengenai populasi indeks teks lengkap yang saat ini sedang berlangsung.

Menampilkan properti indeks teks lengkap dengan SQL Server Management Studio

Catatan

Untuk melihat properti indeks teks lengkap untuk database Azure SQL, gunakan Transact-SQL.

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

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

  3. Perluas Tabel.

  4. Klik kanan tabel tempat indeks teks lengkap ditentukan, pilih indeks Teks-Penuh, dan pada menu konteks indeks Teks-Penuh, pilih Properti. Tindakan ini membuka kotak dialog Properti indeks teks lengkap .

  5. Di panel Pilih halaman , pilih salah satu halaman berikut:

    Halaman Deskripsi
    Umum Menampilkan properti dasar indeks teks-penuh. Properti ini mencakup beberapa properti yang dapat dimodifikasi dan banyak properti yang tidak dapat diubah seperti nama database, nama tabel, dan nama kolom kunci teks lengkap. Properti yang dapat dimodifikasi adalah:

    Daftar Henti Indeks Teks-Penuh

    Pengindeksan Teks Lengkap Diaktifkan

    Pelacakan Perubahan

    Daftar Pencarian Properti
    Kolom Menampilkan kolom tabel yang tersedia untuk pengindeksan teks lengkap. Kolom atau kolom yang dipilih diindeks teks penuh. Anda dapat memilih kolom yang tersedia sebanyak yang ingin Anda sertakan dalam indeks teks lengkap. Untuk informasi selengkapnya, lihat Mengisi Indeks Teks Penuh.
    Jadwal Gunakan halaman ini untuk membuat atau mengelola jadwal untuk pekerjaan SQL Server Agent yang memulai populasi tabel bertahap untuk populasi indeks teks lengkap. Untuk informasi selengkapnya, lihat Mengisi Indeks Teks Penuh.

    Catatan: Setelah Anda keluar dari kotak dialog Properti Indeks Full-Text, jadwal yang baru dibuat dikaitkan dengan pekerjaan SQL Server Agent (Mulai Pengisian Tabel Inkremental pada database_name.table_name).
  6. Pilih OK untuk menyimpan perubahan apa pun dan keluar dari kotak dialog Properti Indeks Teks-Penuh.

Menampilkan properti tabel dan kolom terindeks

Anda dapat menggunakan beberapa fungsi Transact-SQL, seperti OBJECTPROPERTYEX, untuk mendapatkan nilai berbagai properti pengindeksan teks lengkap. Informasi ini berguna untuk mengelola dan memecahkan masalah pencarian teks lengkap.

Tabel berikut mencantumkan properti teks lengkap yang terkait dengan tabel dan kolom terindeks dan fungsi Transact-SQL terkait.

Properti Deskripsi Fungsi
FullTextTypeColumn TYPE COLUMN dalam tabel yang menyimpan informasi jenis dokumen kolom. COLUMNPROPERTY
ApakahTerindeksTeksPenuh Menentukan apakah kolom diaktifkan untuk pengindeksan teks lengkap. COLUMNPROPERTY
IsFulltextKey Apakah indeks adalah kunci teks lengkap untuk tabel. INDEXPROPERTY
TabelIndeksPembaruanLatarBelakangPenuh Apakah tabel memiliki pengindeksan pembaruan latar belakang teks lengkap. OBJECTPROPERTYEX
TableFulltextCatalogId ID katalog teks lengkap tempat data indeks teks lengkap untuk tabel berada. OBJECTPROPERTYEX
TableFulltextChangeTrackingOn Apakah tabel mengaktifkan pelacakan perubahan teks lengkap. OBJECTPROPERTYEX
TabelDokumenTeksPenuhDiproses Jumlah baris yang diproses sejak awal pengindeksan teks lengkap. OBJECTPROPERTYEX
TableFulltextFailCount Jumlah baris Pencarian Teks Penuh yang tidak terindeks. OBJECTPROPERTYEX
TableFulltextItemCount Jumlah baris yang berhasil diindeks teks lengkap. OBJECTPROPERTYEX
TableFulltextKeyColumn ID kolom dari kolom kunci unik teks lengkap. OBJECTPROPERTYEX
TableFullTextMergeStatus Apakah tabel yang memiliki indeks teks lengkap saat ini sedang digabungkan. OBJECTPROPERTYEX
TableFulltextPendingChanges Jumlah entri pelacakan perubahan yang sedang menunggu untuk diproses. OBJECTPROPERTYEX
TableFulltextPopulateStatus Status populasi dalam tabel teks lengkap. OBJECTPROPERTYEX
TableHasActiveFulltextIndex Apakah tabel memiliki indeks teks lengkap aktif. OBJECTPROPERTYEX

Dapatkan informasi tentang kolom kunci teks lengkap

Biasanya, Anda menggabungkan hasil fungsi bernilai himpunan baris CONTAINSTABLE atau FREETEXTTABLE dengan tabel dasar. Dalam kasus seperti itu, Anda perlu mengetahui nama kolom kunci unik. Anda dapat memeriksa apakah indeks unik yang diberikan digunakan sebagai kunci teks lengkap, dan Anda bisa mendapatkan pengidentifikasi kolom kunci teks lengkap.

Menentukan apakah indeks unik tertentu digunakan sebagai kolom kunci teks lengkap

Gunakan pernyataan SELECT untuk memanggil fungsi INDEXPROPERTY. Dalam panggilan fungsi, gunakan fungsi untuk OBJECT_ID mengonversi nama tabel (table_name) menjadi ID tabel, tentukan nama indeks unik untuk tabel, dan tentukan properti indeks IsFulltextKey , sebagai berikut:

SELECT INDEXPROPERTY(OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey');

Pernyataan ini mengembalikan 1 jika indeks menerapkan keunikan pada kolom kunci teks lengkap dan 0 jika tidak.

Contoh

Contoh berikut memeriksa apakah indeks PK_Document_DocumentNode menerapkan keunikan untuk kolom kunci full-text:

USE AdventureWorks2025;
GO

SELECT INDEXPROPERTY(OBJECT_ID('Production.Document'), 'PK_Document_DocumentNode', 'IsFulltextKey');

Contoh ini mengembalikan nilai 1 jika PK_Document_DocumentNode indeks menjamin keunikan untuk kolom kunci full-text. Jika tidak, itu mengembalikan 0 atau NULL. NULL berarti Anda menggunakan nama indeks yang tidak valid, nama indeks tidak sesuai dengan tabel, tabel tidak ada, dan sebagainya.

Temukan pengidentifikasi kolom kunci teks penuh

Setiap tabel yang diaktifkan teks lengkap memiliki kolom yang menerapkan baris unik untuk tabel (kolom kunci unik ). Properti TableFulltextKeyColumn, yang diperoleh dari fungsi OBJECTPROPERTYEX, berisi ID kolom dari kolom kunci unik.

Untuk mendapatkan pengidentifikasi ini, gunakan SELECT pernyataan yang memanggil OBJECTPROPERTYEX fungsi. Gunakan fungsi untuk OBJECT_ID mengonversi nama tabel (table_name) menjadi ID tabel dan tentukan TableFulltextKeyColumn properti, sebagai berikut:

SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFulltextKeyColumn') AS 'Column Identifier';

Contoh

Contoh berikut mengembalikan pengidentifikasi kolom kunci teks lengkap atau NULL. NULL menyiratkan bahwa Anda menggunakan nama indeks yang tidak valid, nama indeks tidak sesuai dengan tabel, tabel tidak ada, atau sebagainya.

USE AdventureWorks2025;
GO

SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO

Contoh berikut menunjukkan cara menggunakan pengidentifikasi kolom kunci unik untuk mendapatkan nama kolom.

USE AdventureWorks2025;
GO

DECLARE @key_column AS SYSNAME;

SET @key_column = COL_NAME(
    OBJECT_ID('Production.Document'),
    OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn')
);

SELECT @key_column AS 'Unique Key Column';
GO

Contoh ini mengembalikan kolom kumpulan hasil bernama Unique Key Column, yang menampilkan satu baris yang berisi nama kolom kunci unik tabel Dokumen, DocumentNode. Jika kueri ini berisi nama indeks yang tidak valid, nama indeks tidak sesuai dengan tabel, tabel tidak ada, dan seterusnya, itu mengembalikan NULL.

Mengindeks kolom varbinary(max) dan XML

Jika Anda mengindeks kolom varbinary(max), varbinary, atau xml , Anda dapat mengkuerinya dengan menggunakan predikat teks lengkap (CONTAINS dan FREETEXT) dan fungsi (CONTAINSTABLE dan FREETEXTTABLE), seperti kolom terindeks teks lengkap lainnya.

Indeks varbinary(max) atau data varbinary

Kolom varbinary(max) atau varbinary tunggal dapat menyimpan banyak jenis dokumen. Database Engine mendukung semua jenis dokumen yang filternya diinstal dan tersedia di sistem operasi. Tipe dokumen dari setiap dokumen diidentifikasi oleh ekstensi file dokumen. Misalnya, untuk .doc ekstensi file, pencarian teks lengkap menggunakan filter yang mendukung dokumen Microsoft Word. Untuk daftar jenis dokumen yang tersedia, kueri tampilan katalog sys.fulltext_document_types .

Mesin Teks-Penuh dapat menggunakan filter yang ada yang diinstal dalam sistem operasi. Sebelum Anda dapat menggunakan filter sistem operasi, pemecah kata, dan stemmer, Anda harus memuatnya dalam instans server, sebagai berikut:

EXECUTE sp_fulltext_service
    @action = 'load_os_resources',
    @value = 1;

Untuk membuat indeks teks lengkap pada kolom varbinary(max), Mesin Teks-Penuh memerlukan akses ke ekstensi file dokumen di kolom varbinary(maks). Anda harus menyimpan informasi ini dalam kolom tabel, yang disebut kolom jenis, yang Anda kaitkan dengan kolom varbinary(max) dalam indeks teks lengkap. Saat mengindeks dokumen, Mesin Teks-Penuh menggunakan ekstensi file di kolom jenis untuk mengidentifikasi filter mana yang akan digunakan.

Indeks data XML

Kolom tipe data xml hanya menyimpan dokumen dan fragmen XML, dan hanya filter XML yang digunakan untuk dokumen. Oleh karena itu, kolom jenis tidak perlu. Pada kolom xml , indeks teks lengkap mengindeks konten elemen XML, tetapi mengabaikan markup XML. Nilai atribut diindeks secara lengkap kecuali jika berupa nilai numerik. Tag elemen digunakan sebagai batas token. Dokumen XML atau HTML yang terbentuk dengan baik dan fragmen yang berisi beberapa bahasa didukung.

Untuk informasi selengkapnya tentang pengindeksan dan kueri pada kolom xml , lihat Menggunakan pencarian teks lengkap dengan kolom XML.

Menonaktifkan atau mengaktifkan kembali pengindeksan teks lengkap untuk tabel

Di Database Engine, semua database yang dibuat pengguna diaktifkan teks lengkap secara default. Selain itu, tabel individual secara otomatis diaktifkan untuk pengindeksan teks lengkap segera setelah indeks teks lengkap dibuat di atasnya dan kolom ditambahkan ke indeks. Tabel secara otomatis dinonaktifkan untuk pengindeksan teks lengkap saat kolom terakhir dihilangkan dari indeks teks lengkapnya.

Pada tabel yang memiliki indeks teks lengkap, Anda dapat menonaktifkan atau mengaktifkan kembali tabel untuk pengindeksan teks lengkap secara manual dengan menggunakan SQL Server Management Studio.

  1. Perluas grup server, perluas Database, dan perluas database yang berisi tabel yang ingin Anda aktifkan untuk pengindeksan teks lengkap.

  2. Perluas Tabel, dan klik kanan tabel yang ingin Anda nonaktifkan atau aktifkan kembali untuk pengindeksan teks lengkap.

  3. Pilih Indeks Teks-Penuh, lalu pilih Nonaktifkan indeks Teks-Penuh atau Aktifkan indeks Teks-Penuh.

Menghapus indeks teks lengkap dari tabel

  1. Di Object Explorer, klik kanan tabel yang memiliki indeks teks lengkap yang ingin Anda hapus.

  2. Pilih Hapus indeks Teks Penuh.

  3. Saat diminta, pilih OK untuk mengonfirmasi bahwa Anda ingin menghapus indeks teks lengkap.