Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Menjelaskan cara mengaktifkan atau menonaktifkan pengindeksan semantik statistik pada kolom terpilih yang berisi dokumen atau teks.
Pencarian semantik statistik menggunakan indeks yang dibuat oleh Pencarian Teks Penuh, dan membuat indeks tambahan. Sebagai hasil dari dependensi ini pada pencarian teks lengkap, Anda membuat indeks semantik baru saat Anda menentukan indeks teks lengkap baru, atau saat Anda mengubah indeks teks lengkap yang ada. Anda dapat membuat indeks semantik baru dengan menggunakan pernyataan Transact-SQL, atau dengan menggunakan Panduan Pengindeksan Teks Lengkap dan kotak dialog lainnya di SQL Server Management Studio, seperti yang dijelaskan dalam artikel ini.
Membuat indeks semantik
Persyaratan dan batasan untuk membuat indeks semantik
Anda dapat membuat indeks pada salah satu objek database yang didukung untuk pengindeksan teks lengkap, termasuk tabel dan tampilan terindeks.
Sebelum Anda dapat mengaktifkan pengindeksan semantik untuk kolom tertentu, prasyarat berikut harus ada:
Katalog teks lengkap harus ada untuk database.
Tabel harus memiliki indeks teks lengkap.
Kolom yang dipilih harus berpartisipasi dalam indeks teks lengkap.
Anda dapat membuat dan mengaktifkan semua persyaratan ini secara bersamaan.
Anda dapat membuat indeks semantik pada kolom yang memiliki salah satu jenis data yang didukung untuk pengindeksan teks lengkap. Untuk informasi selengkapnya, lihat Membuat dan Mengelola Indeks Teks Lengkap.
Anda dapat menentukan jenis dokumen apa pun yang didukung untuk pengindeksan teks lengkap untuk bentukan kolom varbinary(max). Untuk informasi selengkapnya, lihat Cara: Menentukan Tipe Dokumen Mana yang Dapat Diindeks dalam artikel ini.
Pengindeksan semantik membuat dua jenis indeks untuk kolom yang Anda pilih - indeks frasa kunci, dan indeks kesamaan dokumen. Anda tidak dapat memilih hanya satu jenis indeks atau yang lain saat mengaktifkan pengindeksan semantik. Namun Anda dapat mengkueri kedua indeks ini secara independen. Untuk informasi selengkapnya, lihat Menemukan Frasa Kunci di Dokumen dengan Pencarian Semantik dan Menemukan Dokumen Serupa dan Terkait dengan Pencarian Semantik.
Jika Anda tidak secara eksplisit menentukan LCID untuk indeks semantik, maka hanya bahasa utama dan statistik bahasa terkait yang digunakan untuk pengindeksan semantik.
Jika Anda menentukan bahasa untuk kolom yang model bahasanya tidak tersedia, pembuatan indeks gagal dan mengembalikan pesan kesalahan.
Membuat indeks semantik saat tidak ada indeks teks lengkap
Saat Anda membuat indeks teks lengkap baru dengan CREATE FULLTEXT INDEX pernyataan , Anda dapat mengaktifkan pengindeksan semantik di tingkat kolom dengan menentukan kata kunci STATISTICAL_SEMANTICS sebagai bagian dari definisi kolom. Anda juga dapat mengaktifkan pengindeksan semantik saat menggunakan Panduan Pengindeksan Teks Lengkap untuk membuat indeks teks lengkap baru.
Membuat indeks semantik baru dengan menggunakan Transact-SQL
CREATE FULLTEXT INDEX Panggil pernyataan dan tentukan STATISTICAL_SEMANTICS untuk setiap kolom tempat Anda ingin membuat indeks semantik. Untuk informasi selengkapnya tentang semua opsi untuk pernyataan ini, lihat CREATE FULLTEXT INDEX (Transact-SQL).
Contoh 1: Membuat indeks unik, indeks teks lengkap, dan indeks semantik
Contoh berikut membuat katalog teks lengkap default, ft. Contoh kemudian membuat indeks unik pada JobCandidateID kolom HumanResources.JobCandidate tabel AdventureWorks2025 database sampel. Indeks unik ini diperlukan sebagai kolom kunci untuk indeks teks lengkap. Contoh kemudian membuat indeks teks lengkap dan indeks semantik pada Resume kolom.
CREATE FULLTEXT CATALOG ft AS DEFAULT
GO
CREATE UNIQUE INDEX ui_ukJobCand
ON HumanResources.JobCandidate(JobCandidateID)
GO
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate
(Resume
Language 1033
Statistical_Semantics
)
KEY INDEX JobCandidateID
WITH STOPLIST = SYSTEM
GO
Contoh 2: Membuat indeks teks lengkap dan semantik pada beberapa kolom dengan populasi indeks tertunda
Contoh berikut membuat katalog teks lengkap, documents_catalog, dalam AdventureWorks2025 database sampel. Contoh kemudian membuat indeks teks lengkap yang menggunakan katalog baru ini. Indeks teks lengkap dibuat pada kolom Title, DocumentSummary, dan Document dari tabel Production.Document, sementara indeks semantik hanya dibuat pada kolom Document. Indeks teks lengkap ini menggunakan katalog teks lengkap yang baru dibuat dan indeks kunci unik yang ada, PK_Document_DocumentID. Seperti yang disarankan, kunci indeks ini dibuat pada kolom bilangan bulat, DocumentID. Contoh menentukan LCID untuk bahasa Inggris, 1033, yang merupakan bahasa data dalam kolom.
Contoh ini juga menentukan bahwa pelacakan perubahan tidak aktif tanpa populasi. Kemudian, selama jam-jam sepi, contoh menggunakan pernyataan ALTER FULLTEXT INDEX untuk memulai populasi penuh pada indeks baru dan mengaktifkan pelacakan perubahan otomatis.
CREATE FULLTEXT CATALOG documents_catalog
GO
CREATE FULLTEXT INDEX ON Production.Document
(
Title
Language 1033,
DocumentSummary
Language 1033,
Document
TYPE COLUMN FileExtension
Language 1033
Statistical_Semantics
)
KEY INDEX PK_Document_DocumentID
ON documents_catalog
WITH CHANGE_TRACKING OFF, NO POPULATION
GO
Kemudian, pada waktu di luar jam sibuk, indeks diperbarui:
ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO
GO
Membuat indeks semantik baru dengan menggunakan SQL Server Management Studio
Jalankan Panduan Pengindeksan Teks Lengkap dan aktifkan Semantik Statistik pada halaman Pilih Kolom Tabel untuk setiap kolom tempat Anda ingin membuat indeks semantik. Untuk informasi selengkapnya, termasuk informasi tentang cara memulai Panduan Pengindeksan Teks Lengkap, lihat Menggunakan Panduan Pengindeksan Teks Lengkap.
Membuat indeks semantik saat ada indeks teks lengkap yang ada
Anda dapat menambahkan pengindeksan semantik saat mengubah indeks teks lengkap yang ada dengan ALTER FULLTEXT INDEX pernyataan . Anda juga dapat menambahkan pengindeksan semantik dengan menggunakan berbagai kotak dialog di SQL Server Management Studio.
Menambahkan indeks semantik dengan menggunakan Transact-SQL
ALTER FULLTEXT INDEX Panggil pernyataan dengan opsi yang dijelaskan di bagian berikut, untuk setiap kolom tempat Anda ingin menambahkan indeks semantik. Untuk informasi selengkapnya tentang semua opsi untuk pernyataan ini, lihat ALTER FULLTEXT INDEX (Transact-SQL).
Indeks teks lengkap dan semantik diisi ulang setelah panggilan ke ALTER, kecuali Anda menentukan sebaliknya.
Untuk menambahkan pengindeksan teks lengkap hanya ke kolom, gunakan sintaks.
ADDUntuk menambahkan pengindeksan teks lengkap dan semantik ke kolom, gunakan sintaks
ADDdengan opsiSTATISTICAL_SEMANTICS.Untuk menambahkan pengindeksan semantik ke kolom yang sudah diaktifkan untuk pengindeksan teks lengkap, gunakan
ADD STATISTICAL_SEMANTICSopsi . Anda hanya dapat menambahkan pengindeksan semantik ke satu kolom dalam satuALTERpernyataan.
Contoh: Menambahkan pengindeksan semantik ke kolom yang sudah memiliki pengindeksan teks lengkap
Contoh berikut mengubah indeks teks lengkap yang ada pada Production.Document tabel dalam AdventureWorks2025 database sampel. Contoh menambahkan indeks semantik pada Document kolom Production.Document tabel, yang sudah memiliki indeks teks lengkap. Contoh menentukan bahwa indeks tidak diisi ulang secara otomatis.
ALTER FULLTEXT INDEX ON Production.Document
ALTER COLUMN Document
ADD Statistical_Semantics
WITH NO POPULATION
GO
Menambahkan indeks semantik dengan menggunakan SQL Server Management Studio
Anda dapat mengubah kolom yang diaktifkan untuk pengindeksan semantik dan teks lengkap pada halaman Kolom Indeks Teks-Penuh di kotak dialog Properti Indeks Teks-Penuh. Untuk informasi selengkapnya, lihat Mengelola Indeks Teks Penuh.
Mengubah indeks semantik
Persyaratan dan batasan untuk mengubah indeks yang ada
Anda tidak dapat mengubah indeks yang ada saat proses pengisian indeks sedang berlangsung. Untuk informasi selengkapnya tentang memantau kemajuan populasi indeks, lihat Mengelola dan Memantau Pencarian Semantik.
Anda tidak dapat menambahkan pengindeksan ke kolom, dan mengubah atau menghilangkan pengindeksan untuk kolom yang sama, dalam satu panggilan ke
ALTER FULLTEXT INDEXpernyataan.
Menghilangkan indeks semantik
Anda dapat menghilangkan pengindeksan semantik saat mengubah indeks teks lengkap yang ada dengan pernyataan .ALTER FULLTEXT INDEX Anda juga dapat menghilangkan pengindeksan semantik dengan menggunakan berbagai kotak dialog di SQL Server Management Studio.
Menghilangkan indeks semantik dengan menggunakan Transact-SQL
Untuk menghilangkan pengindeksan semantik hanya dari kolom atau beberapa kolom, panggil perintah ALTER FULLTEXT INDEX dengan opsi ALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS. Anda dapat menghilangkan pengindeksan dari beberapa kolom dalam satu ALTER pernyataan.
USE database_name;
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP STATISTICAL_SEMANTICS;
GO
Untuk menghapus pengindeksan teks lengkap dan semantik dari kolom, gunakan pernyataan ALTER FULLTEXT INDEX dengan opsi ALTER COLUMN <column_name> DROP.
USE database_name;
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP;
GO
Menghilangkan indeks semantik dengan SQL Server Management Studio
Anda dapat mengubah kolom yang diaktifkan untuk pengindeksan semantik dan teks lengkap pada halaman Kolom Indeks Teks-Penuh di kotak dialog Properti Indeks Teks-Penuh. Untuk informasi selengkapnya, lihat Mengelola Indeks Teks Penuh.
Persyaratan dan batasan untuk menghilangkan indeks semantik
Anda tidak dapat menghilangkan pengindeksan teks lengkap dari kolom sambil mempertahankan pengindeksan semantik. Pengindeksan semantik bergantung pada pengindeksan teks lengkap untuk hasil kesamaan dokumen.
Anda tidak dapat menentukan
NO POPULATIONopsi saat Anda menghilangkan pengindeksan semantik dari kolom terakhir dalam tabel tempat pengindeksan semantik diaktifkan. Siklus populasi diperlukan untuk menghapus hasil yang diindeks sebelumnya.
Periksa apakah pencarian semantik diaktifkan pada objek database
Apakah pencarian semantik diaktifkan untuk database?
Tanyakan properti dari fungsi metadata DATABASEPROPERTYEX (Transact-SQL).
Nilai 1 pengembalian menunjukkan bahwa pencarian teks lengkap dan pencarian semantik diaktifkan untuk database. Nilai pengembalian 0 menunjukkan bahwa fitur tersebut tidak diaktifkan.
SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled');
GO
Apakah pencarian semantik diaktifkan untuk tabel?
Kueri properti TableFullTextSemanticExtraction dari fungsi metadata OBJECTPROPERTYEX (Transact-SQL).
Nilai pengembalian 1 menunjukkan bahwa pencarian semantik diaktifkan untuk tabel; nilai pengembalian 0 menunjukkan bahwa nilai tersebut tidak diaktifkan.
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO
Apakah pencarian semantik diaktifkan untuk kolom?
Untuk menentukan apakah pencarian semantik diaktifkan untuk kolom tertentu:
Kueri properti
StatisticalSemanticsdari fungsi metadata COLUMNPROPERTY (Transact-SQL).Nilai pengembalian 1 menunjukkan bahwa pencarian semantik diaktifkan untuk kolom; nilai pengembalian 0 menunjukkan bahwa nilai tersebut tidak diaktifkan.
SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics'); GOKueri tampilan katalog sys.fulltext_index_columns (Transact-SQL) untuk indeks teks lengkap.
Nilai 1 dalam
statistical_semanticskolom menunjukkan bahwa kolom yang ditentukan diaktifkan untuk pengindeksan semantik selain pengindeksan teks lengkap.SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('table_name'); GODi Object Explorer di Management Studio, klik kanan pada kolom dan pilih Properti. Pada halaman Umum dalam kotak dialog Properti Kolom, periksa nilai dari properti Semantik Statistik.
Nilai True menunjukkan bahwa kolom yang ditentukan diaktifkan untuk pengindeksan semantik selain pengindeksan teks lengkap.
Menentukan apa yang dapat diindeks untuk Pencarian Semantik
Periksa bahasa mana yang didukung untuk pencarian semantik
Lebih sedikit bahasa yang didukung untuk pengindeksan semantik daripada untuk pengindeksan teks lengkap. Akibatnya, mungkin ada kolom yang dapat Anda indeks untuk pencarian teks lengkap, tetapi tidak untuk pencarian semantik.
Kuery tampilan katalog sys.fulltext_semantic_languages (Transact-SQL).
SELECT * FROM sys.fulltext_semantic_languages;
GO
Bahasa berikut didukung untuk pengindeksan semantik. Daftar ini mewakili output tampilan katalog sys.fulltext_semantic_languages (Transact-SQL), yang diurutkan oleh LCID.
| Bahasa | LCID |
|---|---|
| Mandarin Tradisional | 1028 |
| Jerman | 1031 |
| Inggris (US) | 1033 |
| Prancis | 1036 |
| Italia | 1040 |
| Brasil | 1046 |
| Rusia | 1049 |
| Swedia | 1053 |
| Bahasa Tionghoa Sederhana | 2052 |
| Bahasa Inggris British | 2057 |
| Portugis | 2070 |
| Tionghoa (Hong Kong, SAR, RRC) | 2070 |
| Spanyol | 3082 |
| Bahasa Tionghoa (Singapura) | 4100 |
| Bahasa Mandarin (Macau SAR) | 5124 |
Catatan
Jika hasilnya kosong, Anda harus mengunduh dan menginstal database Statistik Bahasa Semantik. Untuk informasi selengkapnya, lihat Menginstal, melampirkan, dan mendaftarkan Database Statistik Bahasa Semantik.
Menentukan tipe dokumen mana yang dapat diindeks
Lakukan kueri pada tampilan katalog sys.fulltext_document_types (Transact-SQL).
Jika tipe dokumen yang ingin Anda indeks tidak ada dalam daftar jenis yang didukung, maka Anda mungkin harus menemukan, mengunduh, dan menginstal filter tambahan. Untuk informasi selengkapnya, lihat Menampilkan atau Mengubah Filter Terdaftar dan Pemecah Kata.
Praktik terbaik: Membuat grup file terpisah untuk indeks teks lengkap dan semantik
Pertimbangkan untuk membuat grup file terpisah untuk indeks teks lengkap dan semantik jika alokasi ruang disk menjadi perhatian. Indeks semantik dibuat dalam grup file yang sama dengan indeks teks lengkap. Indeks semantik yang diisi penuh mungkin berisi sejumlah besar data.
Masalah: Mencari pada kolom tertentu tidak mengembalikan hasil
Apakah LCID non-Unicode ditentukan untuk bahasa Unicode?
Dimungkinkan untuk mengaktifkan pengindeksan semantik pada jenis kolom non-Unicode dengan LCID untuk bahasa yang hanya memiliki kata Unicode, seperti LCID 1049 untuk Bahasa Rusia. Dalam hal ini, tidak ada hasil yang pernah dikembalikan dari indeks semantik pada kolom ini.