ALTER FULLTEXT INDEX (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Managed Instance Database Azure SQL

Mengubah properti indeks teks lengkap di SQL Server.

tautan topikIkon Konvensi Sintaks Transact-SQL

Sintaks

ALTER FULLTEXT INDEX ON table_name  
   { ENABLE   
   | DISABLE  
   | SET CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF }  
   | ADD ( column_name   
           [ TYPE COLUMN type_column_name ]   
           [ LANGUAGE language_term ]  
           [ STATISTICAL_SEMANTICS ]  
           [,...n]   
         )  
     [ WITH NO POPULATION ]  
   | ALTER COLUMN column_name  
     { ADD | DROP } STATISTICAL_SEMANTICS  
     [ WITH NO POPULATION ]  
   | DROP ( column_name [,...n] )  
     [ WITH NO POPULATION ]   
   | START { FULL | INCREMENTAL | UPDATE } POPULATION  
   | {STOP | PAUSE | RESUME } POPULATION   
   | SET STOPLIST [ = ] { OFF| SYSTEM | stoplist_name }  
     [ WITH NO POPULATION ]   
   | SET SEARCH PROPERTY LIST [ = ] { OFF | property_list_name }  
     [ WITH NO POPULATION ]   
   }  
[;]  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

table_name
Adalah nama tabel atau tampilan terindeks yang berisi kolom atau kolom yang disertakan dalam indeks teks lengkap. Menentukan nama pemilik database dan tabel bersifat opsional.

AKTIFKAN | MENONAKTIFKAN
Memberi tahu SQL Server apakah akan mengumpulkan data indeks teks lengkap untuk table_name. AKTIFKAN mengaktifkan indeks teks lengkap; DISABLE menonaktifkan indeks teks lengkap. Tabel tidak akan mendukung kueri teks lengkap saat indeks dinonaktifkan.

Menonaktifkan indeks teks lengkap memungkinkan Anda menonaktifkan pelacakan perubahan tetapi mempertahankan indeks teks lengkap, yang dapat Anda aktifkan kembali kapan saja menggunakan ENABLE. Saat indeks teks lengkap dinonaktifkan, metadata indeks teks lengkap tetap berada dalam tabel sistem. Jika CHANGE_TRACKING dalam status diaktifkan (pembaruan otomatis atau manual) saat indeks teks lengkap dinonaktifkan, status indeks membeku, perayapan yang sedang berlangsung berhenti, dan perubahan baru pada data tabel tidak dilacak atau disebarluaskan ke indeks.

ATUR CHANGE_TRACKING {| MANUAL | OTOMATIS OFF}
Menentukan apakah perubahan (pembaruan, penghapusan, atau penyisipan) yang dibuat ke kolom tabel yang dicakup oleh indeks teks lengkap akan disebarluaskan dengan SQL Server ke indeks teks lengkap. Perubahan data melalui WRITETEXT dan UPDATETEXT tidak tercermin dalam indeks teks lengkap, dan tidak diambil dengan pelacakan perubahan.

Catatan

Untuk informasi selengkapnya, lihat Interaksi Pelacakan Perubahan dan Parameter TANPA POPULASI.

MANUAL
Menentukan bahwa perubahan terlacak akan disebarluaskan secara manual dengan memanggil ALTER FULLTEXT INDEX ... MULAI PERBARUI POPULASI Pernyataan Transact-SQL (populasi manual). Anda dapat menggunakan SQL Server Agent untuk memanggil pernyataan Transact-SQL ini secara berkala.

AUTO
Menentukan bahwa perubahan terlacak akan disebarluaskan secara otomatis saat data dimodifikasi dalam tabel dasar (populasi otomatis). Meskipun perubahan disebarluaskan secara otomatis, perubahan ini mungkin tidak segera tercermin dalam indeks teks lengkap. AUTO adalah defaultnya.

TIDAK AKTIF
Menentukan bahwa SQL Server tidak akan menyimpan daftar perubahan pada data terindeks.

TAMBAHKAN | column_name DROP
Menentukan kolom yang akan ditambahkan atau dihapus dari indeks teks lengkap. Kolom atau kolom harus berjenis char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, atau varbinary(max).

Gunakan klausa DROP hanya pada kolom yang telah diaktifkan sebelumnya untuk pengindeksan teks lengkap.

Gunakan TYPE COLUMN dan LANGUAGE dengan klausa ADD untuk mengatur properti ini pada column_name. Saat kolom ditambahkan, indeks teks lengkap pada tabel harus diisi ulang agar kueri teks lengkap terhadap kolom ini berfungsi.

Catatan

Apakah indeks teks lengkap diisi setelah kolom ditambahkan atau dihilangkan dari indeks teks lengkap bergantung pada apakah pelacakan perubahan diaktifkan dan apakah WITH NO POPULATION ditentukan. Untuk informasi selengkapnya, lihat Interaksi Pelacakan Perubahan dan Parameter TANPA POPULASI.

KETIK type_column_name KOLOM
Menentukan nama kolom tabel, type_column_name, yang digunakan untuk menyimpan jenis dokumen untuk dokumen varbinary, varbinary(max), atau gambar . Kolom ini, yang dikenal sebagai kolom jenis, berisi ekstensi file yang disediakan pengguna (.doc, .pdf, .xls, dan sebagainya). Kolom jenis harus berjenis char, nchar, varchar, atau nvarchar.

Tentukan KOLOM JENIS type_column_name hanya jika column_name menentukan kolom varbinary, varbinary(max) atau gambar, di mana data disimpan sebagai data biner; jika tidak, SQL Server mengembalikan kesalahan.

Catatan

Pada waktu pengindeksan, mesin Full-Text menggunakan singkatan di kolom jenis setiap baris tabel untuk mengidentifikasi filter pencarian teks lengkap mana yang akan digunakan untuk dokumen dalam column_name. Filter memuat dokumen sebagai aliran biner, menghapus informasi pemformatan, dan mengirim teks dari dokumen ke komponen pemecah kata. Untuk informasi selengkapnya, lihat Mengonfigurasi dan Mengelola Filter untuk Pencarian.

LANGUAGE_TERM BAHASA
Adalah bahasa data yang disimpan dalam column_name.

language_term bersifat opsional dan dapat ditentukan sebagai string, bilangan bulat, atau nilai heksadesimal yang sesuai dengan pengidentifikasi lokal (LCID) bahasa. Jika language_term ditentukan, bahasa yang diwakilinya akan diterapkan ke semua elemen kondisi pencarian. Jika tidak ada nilai yang ditentukan, bahasa teks lengkap default instans SQL Server digunakan.

Gunakan prosedur tersimpan sp_configure untuk mengakses informasi tentang bahasa teks lengkap default instans SQL Server.

Saat ditentukan sebagai string, language_term sesuai dengan nilai kolom alias dalam tabel sistem syslanguages . String harus diapit dalam tanda kutip tunggal, seperti dalam 'language_term'. Ketika ditentukan sebagai bilangan bulat, language_term adalah LCID aktual yang mengidentifikasi bahasa. Ketika ditentukan sebagai nilai heksadesimal, language_term adalah 0x diikuti oleh nilai heksa LCID. Nilai hex tidak boleh melebihi delapan digit, termasuk nol di depannya.

Jika nilai dalam format kumpulan karakter byte ganda (DBCS), SQL Server akan mengonversinya ke Unicode.

Sumber daya, seperti pemecah kata dan stemmer, harus diaktifkan untuk bahasa yang ditentukan sebagai language_term. Jika sumber daya tersebut tidak mendukung bahasa yang ditentukan, SQL Server mengembalikan kesalahan.

Untuk kolom non-BLOB dan non-XML yang berisi data teks dalam beberapa bahasa, atau untuk kasus ketika bahasa teks yang disimpan dalam kolom tidak diketahui, gunakan sumber daya bahasa netral (0x0). Untuk dokumen yang disimpan dalam kolom jenis XML atau BLOB, pengodean bahasa dalam dokumen akan digunakan pada waktu pengindeksan. Misalnya, di kolom XML, atribut xml:lang dalam dokumen XML akan mengidentifikasi bahasa. Pada waktu kueri, nilai yang sebelumnya ditentukan dalam language_term menjadi bahasa default yang digunakan untuk kueri teks lengkap kecuali language_term ditentukan sebagai bagian dari kueri teks lengkap.

STATISTICAL_SEMANTICS
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Membuat frasa kunci tambahan dan indeks kesamaan dokumen yang merupakan bagian dari pengindeksan semantik statistik. Untuk informasi selengkapnya, lihat Pencarian Semantik (SQL Server).

[ ,... n]
Menunjukkan bahwa beberapa kolom dapat ditentukan untuk klausa ADD, ALTER, atau DROP. Saat beberapa kolom ditentukan, pisahkan kolom ini dengan koma.

TANPA POPULASI
Menentukan bahwa indeks teks lengkap tidak akan diisi setelah operasi kolom ADD atau DROP atau operasi SET STOPLIST. Indeks hanya akan diisi jika pengguna menjalankan START... Perintah POPULATION.

Ketika TIDAK ADA POPULASI yang ditentukan, SQL Server tidak mengisi indeks. Indeks diisi hanya setelah pengguna memberikan ALTER FULLTEXT INDEX... Perintah START POPULATION. Ketika TIDAK ADA POPULASI tidak ditentukan, SQL Server mengisi indeks.

Jika CHANGE_TRACKING diaktifkan dan WITH NO POPULATION ditentukan, SQL Server mengembalikan kesalahan. Jika CHANGE_TRACKING diaktifkan dan WITH NO POPULATION tidak ditentukan, SQL Server melakukan populasi penuh pada indeks.

Catatan

Untuk informasi selengkapnya, lihat Interaksi Pelacakan Perubahan dan Parameter TANPA POPULASI.

{ADD | DROP } STATISTICAL_SEMANTICS
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Mengaktifkan atau menonaktifkan pengindeksan semantik statistik untuk kolom yang ditentukan. Untuk informasi selengkapnya, lihat Pencarian Semantik (SQL Server).

MULAI {FULL| BERTAHAP| UPDATE} POPULASI
Memberi tahu SQL Server untuk memulai populasi indeks teks lengkap table_name. Jika populasi indeks teks lengkap sudah berlangsung, SQL Server mengembalikan peringatan dan tidak memulai populasi baru.

PENUH
Menentukan bahwa setiap baris tabel diambil untuk pengindeksan teks lengkap meskipun baris telah diindeks.

INKREMENTAL
Menentukan bahwa hanya baris yang dimodifikasi sejak populasi terakhir yang diambil untuk pengindeksan teks lengkap. INCREMENTAL hanya dapat diterapkan jika tabel memiliki kolom tanda waktu jenis. Jika tabel dalam katalog teks lengkap tidak berisi kolom tanda waktu jenis, tabel mengalami populasi PENUH.

PERBARUI
Menentukan pemrosesan semua penyisipan, pembaruan, atau penghapusan sejak terakhir kali indeks pelacakan perubahan diperbarui. Populasi pelacakan perubahan harus diaktifkan pada tabel, tetapi indeks pembaruan latar belakang atau pelacakan perubahan otomatis tidak boleh diaktifkan.

{STOP | jeda | RESUME } POPULASI
Menghentikan, atau menjeda populasi apa pun yang sedang berlangsung; atau menghentikan atau melanjutkan populasi yang dijeda.

STOP POPULATION tidak menghentikan pelacakan perubahan otomatis atau indeks pembaruan latar belakang. Untuk menghentikan pelacakan perubahan, gunakan SET CHANGE_TRACKING OFF.

PAUSE POPULATION dan RESUME POPULATION hanya dapat digunakan untuk populasi penuh. Mereka tidak relevan dengan jenis populasi lain karena populasi lain melanjutkan perayapan dari tempat perayapan berhenti.

ATUR DAFTAR BERHENTI { NONAKTIF| | SISTEM stoplist_name }
Mengubah daftar henti teks lengkap yang terkait dengan indeks, jika ada.

TIDAK AKTIF
Menentukan bahwa tidak ada daftar henti yang dikaitkan dengan indeks teks lengkap.

SISTEM
Menentukan bahwa STOPLIST sistem teks lengkap default harus digunakan untuk indeks teks lengkap ini.

stoplist_name
Menentukan nama daftar henti yang akan dikaitkan dengan indeks teks lengkap.

Untuk informasi selengkapnya, lihat Mengonfigurasi dan Mengelola Stopwords dan Stoplist untuk Full-Text Search.

ATUR DAFTAR PROPERTI PENCARIAN { OFF | property_list_name } [ TANPA POPULASI ]
Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Mengubah daftar properti pencarian yang terkait dengan indeks, jika ada.

TIDAK AKTIF
Menentukan bahwa tidak ada daftar properti yang terkait dengan indeks teks lengkap. Saat Anda menonaktifkan daftar properti pencarian indeks teks lengkap (ALTER FULLTEXT INDEX ... SET SEARCH PROPERTY LIST OFF), pencarian properti pada tabel dasar tidak lagi dimungkinkan.

Secara default, saat Anda menonaktifkan daftar properti pencarian yang ada, indeks teks lengkap secara otomatis diisi ulang. Jika Anda menentukan WITH NO POPULATION saat menonaktifkan daftar properti pencarian, repopulasi otomatis tidak terjadi. Namun, kami sarankan Anda akhirnya menjalankan populasi penuh pada indeks teks lengkap ini sesuka Anda. Mengisi ulang indeks teks lengkap akan menghapus metadata khusus properti dari setiap properti pencarian yang dihilangkan, membuat indeks teks lengkap lebih kecil dan lebih efisien.

property_list_name
Menentukan nama daftar properti pencarian yang akan dikaitkan dengan indeks teks lengkap.

Menambahkan daftar properti pencarian ke indeks teks lengkap memerlukan pengisian ulang indeks untuk mengindeks properti pencarian yang terdaftar untuk daftar properti pencarian terkait. Jika Anda menentukan WITH NO POPULATION saat menambahkan daftar properti pencarian, Anda harus menjalankan populasi pada indeks, pada waktu yang tepat.

Penting

Jika indeks teks lengkap sebelumnya dikaitkan dengan pencarian yang berbeda, indeks harus dibangun kembali daftar properti untuk membawa indeks ke status konsisten. Indeks segera dipotong dan kosong sampai populasi penuh berjalan. Untuk informasi selengkapnya, lihat Mengubah Daftar Properti Pencarian Penyebab Membangun Ulang Indeks.

Catatan

Anda bisa mengaitkan daftar properti pencarian tertentu dengan lebih dari satu indeks teks lengkap dalam database yang sama.

Untuk menemukan daftar properti pencarian pada database saat ini

Untuk informasi selengkapnya tentang daftar properti pencarian, lihat Properti Dokumen Pencarian dengan Daftar Properti Pencarian.

Interaksi Pelacakan Perubahan dan Parameter TANPA POPULASI

Apakah indeks teks lengkap diisi tergantung pada apakah pelacakan perubahan diaktifkan dan apakah WITH NO POPULATION ditentukan dalam pernyataan ALTER FULLTEXT INDEX. Tabel berikut ini meringkas hasil interaksi mereka.

Pelacakan Perubahan TANPA POPULASI Hasil
Tidak Diaktifkan Tidak ditentukan Populasi penuh dilakukan pada indeks.
Tidak Diaktifkan Ditentukan Tidak ada populasi indeks yang terjadi sampai ALTER FULLTEXT INDEX... Pernyataan START POPULATION dikeluarkan.
Aktif Ditentukan Kesalahan muncul, dan indeks tidak diubah.
Aktif Tidak ditentukan Populasi penuh dilakukan pada indeks.

Untuk informasi selengkapnya tentang mengisi indeks teks lengkap, lihat Mengisi Indeks Full-Text.

Mengubah Daftar Properti Pencarian Menyebabkan Pembangunan Ulang Indeks

Pertama kali indeks teks lengkap dikaitkan dengan daftar properti pencarian, indeks harus diisi ulang ke istilah pencarian khusus properti indeks. Data indeks yang ada tidak terpotok.

Namun, jika Anda mengaitkan indeks teks lengkap dengan daftar properti yang berbeda, indeks akan dibangun kembali. Membangun kembali segera memotong indeks teks lengkap, menghapus semua data yang ada, dan indeks harus diisi ulang. Saat populasi berlangsung, kueri teks lengkap pada tabel dasar hanya mencari pada baris tabel yang telah diindeks oleh populasi. Data indeks yang diisi ulang akan menyertakan metadata dari properti terdaftar dari daftar properti pencarian yang baru ditambahkan.

Skenario yang menyebabkan pembangunan kembali meliputi:

  • Beralih langsung ke daftar properti pencarian yang berbeda (lihat "Skenario A," nanti di bagian ini).

  • Menonaktifkan daftar properti pencarian dan kemudian mengaitkan indeks dengan daftar properti pencarian apa pun (lihat "Skenario B," nanti di bagian ini)

Catatan

Untuk informasi selengkapnya tentang cara kerja pencarian teks lengkap dengan daftar properti pencarian, lihat Properti Dokumen Pencarian dengan Daftar Properti Pencarian. Untuk informasi tentang populasi penuh, lihat Mengisi Indeks Full-Text.

Skenario A: Beralih Langsung ke Daftar Properti Pencarian yang Berbeda

  1. Indeks teks lengkap dibuat dengan table_1 daftar spl_1properti pencarian :

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index   
       WITH SEARCH PROPERTY LIST=spl_1,   
       CHANGE_TRACKING OFF, NO POPULATION;   
    
  2. Populasi penuh dijalankan pada indeks teks lengkap:

    ALTER FULLTEXT INDEX ON table_1 START FULL POPULATION;  
    
  3. Indeks teks lengkap kemudian dikaitkan dengan daftar properti pencarian yang berbeda, spl_2, menggunakan pernyataan berikut:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_2;  
    

    Pernyataan ini menyebabkan populasi penuh, perilaku default. Namun, sebelum memulai populasi ini, mesin Full-Text secara otomatis memotong indeks.

Skenario B: Menonaktifkan Daftar Properti Pencarian dan Kemudian Mengaitkan Indeks dengan Daftar Properti Pencarian Apa Pun

  1. Indeks teks lengkap dibuat dengan table_1 daftar spl_1properti pencarian , diikuti oleh populasi penuh otomatis (perilaku default):

    CREATE FULLTEXT INDEX ON table_1 (column_name) KEY INDEX unique_key_index   
       WITH SEARCH PROPERTY LIST=spl_1;   
    
  2. Daftar properti pencarian dinonaktifkan, sebagai berikut:

    ALTER FULLTEXT INDEX ON table_1   
       SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;   
    
  3. Indeks teks lengkap sekali lagi terkait daftar properti pencarian yang sama atau yang berbeda.

    Misalnya pernyataan berikut mengaitkan kembali indeks teks lengkap dengan daftar properti pencarian asli, spl_1:

    ALTER FULLTEXT INDEX ON table_1 SET SEARCH PROPERTY LIST spl_1;  
    

    Pernyataan ini memulai populasi penuh, perilaku default.

    Catatan

    Pembangunan ulang juga akan diperlukan untuk daftar properti pencarian yang berbeda, seperti spl_2.

Izin

Pengguna harus memiliki izin UBAH pada tabel atau tampilan terindeks, atau menjadi anggota peran server tetap sysadmin , atau peran database tetap db_ddladmin atau db_owner .

Jika SET STOPLIST ditentukan, pengguna harus memiliki izin REFERENCES pada daftar berhenti. Jika SET SEARCH PROPERTY LIST ditentukan, pengguna harus memiliki izin REFERENCES pada daftar properti pencarian. Pemilik daftar henti atau daftar properti pencarian yang ditentukan dapat memberikan izin REFERENCES, jika pemilik memiliki izin ALTER FULLTEXT CATALOG.

Catatan

Publik diberikan izin REFERENCES ke daftar henti default yang dikirim dengan SQL Server.

Contoh

A. Mengatur pelacakan perubahan manual

Contoh berikut mengatur pelacakan perubahan manual pada indeks teks lengkap pada JobCandidate tabel.

USE AdventureWorks2012;  
GO  
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate  
   SET CHANGE_TRACKING MANUAL;  
GO  

B. Mengaitkan daftar properti dengan indeks teks lengkap

Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Contoh berikut mengaitkan DocumentPropertyList daftar properti dengan indeks teks lengkap pada Production.Document tabel. Pernyataan ALTER FULLTEXT INDEX ini memulai populasi penuh, yang merupakan perilaku default dari klausul SET SEARCH PROPERTY LIST.

Catatan

Untuk contoh yang membuat DocumentPropertyList daftar properti, lihat MEMBUAT DAFTAR PROPERTI PENCARIAN (Transact-SQL).

USE AdventureWorks2012;  
GO  
ALTER FULLTEXT INDEX ON Production.Document   
   SET SEARCH PROPERTY LIST DocumentPropertyList;   
GO  

C. Menghapus daftar properti pencarian

Berlaku untuk: SQL Server 2012 (11.x) dan yang lebih baru.

Contoh berikut menghapus DocumentPropertyList daftar properti dari indeks teks lengkap pada Production.Document. Dalam contoh ini, tidak ada terburu-buru untuk menghapus properti dari indeks, sehingga opsi WITH NO POPULATION ditentukan. Namun, pencarian tingkat properti lebih lama diizinkan terhadap indeks teks lengkap ini.

USE AdventureWorks2012;  
GO  
ALTER FULLTEXT INDEX ON Production.Document   
   SET SEARCH PROPERTY LIST OFF WITH NO POPULATION;   
GO  

D. Memulai populasi penuh

Contoh berikut memulai populasi penuh pada indeks teks lengkap pada JobCandidate tabel.

USE AdventureWorks2012;  
GO  
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate   
   START FULL POPULATION;  
GO  

Lihat juga

sys.fulltext_indexes (T-SQL)
CREATE FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)
Pencarian Teks Lengkap
Mengisi Indeks Teks Lengkap