Mengaktifkan pencarian semantik pada tabel dan kolom
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 kolom varbinary(maks ). 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 MEMBUAT INDEKS FULLTEXT (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 AdventureWorks2022
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 AdventureWorks2022
database sampel. Contoh kemudian membuat indeks teks lengkap yang menggunakan katalog baru ini. Indeks teks lengkap dibuat pada Title
kolom Production.Document
, DocumentSummary
, dan Document
tabel, sementara indeks semantik hanya dibuat pada Document
kolom . 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 sibuk, contoh menggunakan ALTER FULLTEXT INDEX
pernyataan 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 puncak, indeks diisi:
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.
ADD
Untuk menambahkan pengindeksan teks lengkap dan semantik ke kolom, gunakan
ADD
sintaks denganSTATISTICAL_SEMANTICS
opsi .Untuk menambahkan pengindeksan semantik ke kolom yang sudah diaktifkan untuk pengindeksan teks lengkap, gunakan
ADD STATISTICAL_SEMANTICS
opsi . Anda hanya dapat menambahkan pengindeksan semantik ke satu kolom dalam satuALTER
pernyataan.
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 AdventureWorks2022
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 bisa mengubah kolom yang diaktifkan untuk pengindeksan semantik dan teks lengkap pada halaman Kolom Indeks Teks-Penuh dari kotak dialog Properti Indeks Teks-Penuh. Untuk informasi selengkapnya, lihat Mengelola Indeks Teks Lengkap.
Mengubah indeks semantik
Persyaratan dan batasan untuk mengubah indeks yang ada
Anda tidak dapat mengubah indeks yang ada saat populasi 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 INDEX
pernyataan.
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 kolom, panggil ALTER FULLTEXT INDEX
pernyataan dengan ALTER COLUMN <column_name> DROP STATISTICAL_SEMANTICS
opsi . 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 menghilangkan pengindeksan teks lengkap dan semantik dari kolom, panggil ALTER FULLTEXT INDEX
pernyataan dengan ALTER COLUMN <column_name> DROP
opsi .
USE database_name;
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP;
GO
Menghilangkan indeks semantik dengan SQL Server Management Studio
Anda bisa mengubah kolom yang diaktifkan untuk pengindeksan semantik dan teks lengkap pada halaman Kolom Indeks Teks-Penuh dari kotak dialog Properti Indeks Teks-Penuh. Untuk informasi selengkapnya, lihat Mengelola Indeks Teks Lengkap.
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 POPULATION
opsi 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?
IsFullTextEnabled
Kueri properti fungsi metadata DATABASEPROPERTYEX (Transact-SQL).
Nilai 1
pengembalian menunjukkan bahwa pencarian teks lengkap dan pencarian semantik diaktifkan untuk database. Nilai 0
pengembalian menunjukkan bahwa nilai tersebut tidak diaktifkan.
SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled');
GO
Apakah pencarian semantik diaktifkan untuk tabel?
TableFullTextSemanticExtraction
Kueri properti 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:
StatisticalSemantics
Kueri properti 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'); GO
Kueri tampilan katalog sys.fulltext_index_columns (Transact-SQL) untuk indeks teks lengkap.
Nilai 1 dalam
statistical_semantics
kolom 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'); GO
Di Object Explorer di Management Studio, klik kanan pada kolom dan pilih Properti. Pada halaman Umum kotak dialog Properti Kolom, centang nilai 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.
Mengkueri sys.fulltext_semantic_languages tampilan katalog (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 |
Inggris Inggris | 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
Kueri 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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk