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

Membuat katalog teks lengkap

Sebelum dapat membuat indeks teks lengkap, Anda harus memiliki katalog teks lengkap. Katalog adalah kontainer virtual untuk satu atau beberapa indeks teks lengkap. Untuk informasi selengkapnya, lihat Membuat dan Mengelola Katalog Teks Lengkap.

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:

  • Populasi penuh
  • Populasi berdasarkan pelacakan perubahan
  • Populasi inkremental berdasarkan tanda waktu.

Untuk informasi selengkapnya, lihat Mengisi Indeks Teks Lengkap.

Menampilkan properti indeks teks lengkap

Menampilkan properti indeks teks lengkap dengan Transact-SQL

Tampilan Katalog atau Manajemen Dinamis Deskripsi
sys.fulltext_index_catalog_usages (T-SQL) Mengembalikan baris untuk setiap katalog teks lengkap ke referensi indeks teks lengkap.
sys.fulltext_index_columns (T-SQL) Berisi baris untuk setiap kolom yang merupakan bagian dari indeks teks lengkap.
sys.fulltext_index_fragments (T-SQL) Indeks teks lengkap menggunakan tabel internal yang disebut fragmen indeks teks lengkap untuk menyimpan data indeks terbalik. Tampilan ini dapat digunakan 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 (T-SQL) Berisi baris per indeks teks lengkap objek tabular.
sys.dm_fts_index_keywords (T-SQL) Mengembalikan informasi tentang konten indeks teks lengkap untuk tabel yang ditentukan.
sys.dm_fts_index_keywords_by_document (T-SQL) 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 (T-SQL) Mengembalikan informasi tentang 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. Ini membuka kotak dialog Properti indeks teks-penuh.

  5. Di panel Pilih halaman , Anda bisa memilih salah satu halaman berikut ini:

    Halaman Deskripsi
    Umum Menampilkan properti dasar indeks teks-penuh. Ini termasuk beberapa properti yang dapat diubah 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

    Ubah Pelacakan

    Daftar Properti Pencarian
    Kolom Menampilkan kolom tabel yang tersedia untuk pengindeksan teks lengkap. Kolom atau kolom yang dipilih diindeks teks lengkap. Anda dapat memilih kolom yang tersedia sebanyak yang ingin Anda sertakan dalam indeks teks lengkap. Untuk informasi selengkapnya, lihat Mengisi Indeks Teks Lengkap.
    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 Lengkap.

    Catatan: Setelah Anda keluar dari kotak dialog Properti Indeks Teks Lengkap, jadwal yang baru dibuat dikaitkan dengan pekerjaan SQL Server Agent (Mulai Populasi Tabel Bertahap 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

Beberapa fungsi Transact-SQL seperti OBJECTPROPERTYEX dapat digunakan 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 KETIK KOLOM dalam tabel yang menyimpan informasi tipe dokumen kolom. COLUMNPROPERTY
IsFulltextIndexed Apakah kolom telah diaktifkan untuk pengindeksan teks lengkap. COLUMNPROPERTY
IsFulltextKey Apakah indeks adalah kunci teks lengkap untuk tabel. INDEXPROPERTY
TableFulltextBackgroundUpdateIndexOn 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
TableFulltextDocsProcessed Jumlah baris yang diproses sejak awal pengindeksan teks lengkap. OBJECTPROPERTYEX
TableFulltextFailCount Jumlah baris Pencarian Teks-Penuh tidak diindeks. OBJECTPROPERTYEX
TableFulltextItemCount Jumlah baris yang berhasil diindeks teks lengkap. OBJECTPROPERTYEX
TableFulltextKeyColumn ID kolom 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 tertunda untuk diproses. OBJECTPROPERTYEX
TableFulltextPopulateStatus Status populasi tabel teks lengkap. OBJECTPROPERTYEX
TableHasActiveFulltextIndex Apakah tabel memiliki indeks teks lengkap aktif. OBJECTPROPERTYEX

Mendapatkan informasi tentang kolom kunci teks lengkap

Biasanya, hasil fungsi bernilai rowset CONTAINSTABLE atau FREETEXTTABLE perlu digabungkan dengan tabel dasar. Dalam kasus seperti itu, Anda perlu mengetahui nama kolom kunci unik. Anda dapat menanyakan apakah indeks unik tertentu digunakan sebagai kunci teks lengkap, dan Anda dapat memperoleh 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 OBJECT_ID untuk 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 digunakan untuk memberlakukan keunikan kolom kunci teks lengkap dan 0 jika tidak.

Contoh

Contoh berikut menanyakan apakah PK_Document_DocumentNode indeks digunakan untuk memberlakukan keunikan kolom kunci teks lengkap, sebagai berikut:

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

Contoh ini mengembalikan 1 jika PK_Document_DocumentNode indeks digunakan untuk memberlakukan keunikan kolom kunci teks lengkap. Jika tidak, ia mengembalikan 0 atau NULL. NULL menyiratkan Anda menggunakan nama indeks yang tidak valid, nama indeks tidak sesuai dengan tabel, tabel tidak ada, atau sebagainya.

Menemukan pengidentifikasi kolom kunci teks lengkap

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

Untuk mendapatkan pengidentifikasi ini, Anda dapat menggunakan pernyataan SELECT untuk memanggil fungsi OBJECTPROPERTYEX. Gunakan fungsi OBJECT_ID untuk mengonversi nama tabel (table_name) menjadi ID tabel dan tentukan properti TableFulltextKeyColumn , 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 AdventureWorks2022;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO

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

USE AdventureWorks2022;
GO

DECLARE @key_column 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 sebagainya, itu akan mengembalikan NULL.

Indeks kolom varbinary(max) dan XML

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

Indeks data varbinary(maks) atau varbinary

Kolom varbinary (maks) atau varbinary tunggal dapat menyimpan banyak jenis dokumen. SQL Server mendukung jenis dokumen apa pun yang filternya diinstal dan tersedia dalam sistem operasi. Tipe dokumen dari setiap dokumen diidentifikasi oleh ekstensi file dokumen. Misalnya, untuk ekstensi file .doc, 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:

EXEC 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). Informasi ini harus disimpan dalam kolom tabel, yang disebut kolom jenis, yang harus dikaitkan 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.

Mengindeks 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 adalah teks lengkap yang diindeks kecuali 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 SQL Server, semua database yang dibuat pengguna adalah teks lengkap yang diaktifkan 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 secara manual untuk pengindeksan teks lengkap 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 Lengkap.

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

Langkah berikutnya